PROCEDURE (Transact-SQL) CREATE

Saklı bir yordam oluşturur.saklı yordam kaydedilmiş topluluğudur Transact-SQL ifadeleri ya da Microsoft başvuru .NET Framework alma ve kullanıcı tarafından sağlanan Parametreler verir ortak dil çalışma zamanı (CLR) yöntem. Yordamlar, kalıcı kullanımı için bir oturumundaki geçici yerel yordam geçici kullanım için veya tüm oturumlar, genel geçici bir yordam içinde geçici kullanım için oluşturulabilir.

Saklı yordamlar, bir kopyasını otomatik olarak çalıştırılacak de oluşturulabilir SQL Server başlatır.

Topic link iconTransact-SQL sözdizimi kuralları

CREATE { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ] 
    [ { @parameter [ type_schema_name. ] data_type } 
        [ VARYING ] [ = default ] [ OUT | OUTPUT ] [READONLY]
    ] [ ,...n ] 
[ WITH <procedure_option> [ ,...n ] ]
[ FOR REPLICATION ] 
AS { <sql_statement> [;][ ...n ] | <method_specifier> }
[;]
<procedure_option> ::= 
    [ ENCRYPTION ]
    [ RECOMPILE ]
    [ EXECUTE AS Clause ]

<sql_statement> ::= 
{ [ BEGIN ] statements [ END ] }

<method_specifier> ::=
EXTERNAL NAME assembly_name.class_name.method_name

Bağımsız değişkenler

  • schema_name
    Yordamı ait olduğu şema adıdır.

  • procedure_name
    Yeni saklı yordam adıdır.Yordam adları için kurallara uymanız gerekir tanımlayıcılar şema içinde benzersiz olmalıdır.

    Önek kullanmamanız önerilir sp_who yordamın adı.Bu önek tarafından kullanılır SQL Server saklı yordamları sistemi atamak için. Daha fazla bilgi için bkz:Saklý Yordamlarý (Veritabanı Altyapısı) oluşturma.

    Yerel veya genel geçici bir yordamlar önce bir numara işareti (#) kullanılarak oluşturulabilir. procedure_name (#procedure_name) yerel geçici yordamlar ve () genel geçici yordamlar için iki sayı işaretleri##procedure_name). CLR saklı yordamlar için geçici adı belirtilemez.

    Saklı yordam veya bir genel geçici olarak saklanan yordam için tam adı da dahil olmak üzere ##, 128 karakterden uzun olamaz.#, Dahil olan yerel geçici olarak saklanan yordam, tam adı, 116 karakterden uzun olamaz.

  • ;number
    Aynı ada sahip yordamlar gruplandırmak için kullanılan isteğe bağlı bir tamsayı olarak belirtilir.Gruplandırılmış Bu yordamlar birlikte bir DROP PROCEDURE kullanarak kesilmesine deyim.Örneğin, bir uygulama olarak adlandırılır. Siparişler adlı bir yordam kullanabilirsiniz
    orderproc; 1
    , orderproc; 2ve böyle devam eder.DROP YORDAMı orderproc deyimini, tüm grubu bırakır.Adı ayrılmış tanıtıcılar varsa, numarayı tanımlayıcısını bir parçası olarak dahil olmaması gerekir; bu yalnızca geçici uygun sınırlayıcı kullanın procedure_name.

    Numaralandırılmış saklı yordamlar, aşağıdaki kısıtlamaları vardır:

    • Kullanamazsınız XML veya CLR türü kullanıcı tanımlı veri türleri olarak.

    • Bir plan kılavuzu numaralandırılmış saklı yordam oluşturamıyor.

    Not

    This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

  • **@**parameter
    Bir yordamın parametre belirtilir.Bir veya daha fazla parametre bir CREATE PROCEDURE deyim içinde bildirilemez.Her değer, yordam parametresi için varsayılan olarak tanımlı veya değer çağrıldığında, kullanıcı tarafından parametresi sağlanmalıdır bildirilen küme başka bir parametre eşit için.Bir saklı yordam, en fazla 2100 parametreleri olabilir.Bir yordamın içeriyorsa tablo değerli parametrelerive parametresi eksik arama, varsayılan değer boş bir tablo geçirilir inç

    Parametre adı kullanarak belirttiğiniz bir at işaretini ()@) ilk karakter.Parametre adı kurallarına uymanız gerekir tanımlayıcılar.Yordamın parametreleri yereldir; aynı parametre adları, diğer yordamlar kullanılabilir.Varsayılan olarak, bu parametre, yalnızca sabit ifade yer alabilir; tablo adları, sütun adları veya diğer veritabanı nesnelerinin adlarını yerine kullanılamaz.Daha fazla bilgi için bkz:(Transact-SQL) yürütmek.

    FOR çoğaltma belirtilirse parametreleri bildirilemez.

  • [ type_schema_name**.** ] data_type
    Parametre ve ait olduğu şema veri türündedir.Tüm veri türleri için parametre olarak kullanılan bir Transact-SQL saklı yordam. Kullanıcı tanımlı tablo türü, tablo değerli bir parametre için parametre olarak bildirmek için kullanabileceğiniz bir Transact-SQL saklı yordam. Yalnızca giriş parametresi tablo değerli parametreleri de belirtilebilir ve bunlar READONLY anahtar sözcüğe göre birlikte gerekir.The cursor data type can be used only on OUTPUT parameters.Belirttiğiniz bir cursor veri türü, VARYING ve OUTPUT anahtar sözcükleri de belirtilmelidir. Ile belirtilen birden çok çıkış parametresi olabilir cursor Veri Türü.

    Yordamlar, CLR için depolanan Karakter, varchar, Text, ntext, Image, imleç, kullanıcı-tablo türlerini ve tanımlamaTABLO parametre olarak belirtilemez.CLR türü arasındaki ilişkiyi hakkında daha fazla bilgi için ve SQL Server Sistem veri türleri için bkz: CLR parametre veri eşleme. Daha fazla bilgi için SQL Server Sistem veri türleri ve bunların sözdizimi, bkz: (Transact-SQL) veri türleri.

    Parametrenin veri türünü bir CLR olup olmadığını kullanıcı tanımlı tür, yürütmek izni bağlı olması gerekir.

    If type_schema_name belirtilmemiş, SQL Server Database Engine Başvurular type_name Aşağıdaki sıra ile:

    • The SQL Server system data types.

    • Geçerli veritabanındaki geçerli kullanıcının varsayılan şema.

    • The dbo schema in the current database.

    Numaralandırılmış saklı yordamlar için veri türü olamaz xml veya CLR kullanıcı tanımlı türü.

  • DEĞİŞEN
    sonuç kümesi bir çıkış parametresi olarak desteklenen belirtir.Bu parametre, saklı yordam tarafından dinamik olarak oluşturulur ve içeriğini değişebilir.Yalnızca için geçerlidir cursor Parametreler.

  • default
    Parametre için varsayılan değer olarak belirtilir.Varsa bir default değeri tanımlanır, bu yordamı, bir değer bu parametre belirtmeden yürütülebilecek. Varsayılan değer sabit olmalı veya null olabilir.Yordam parametresi LIKE anahtar sözcüğüyle kullanıyorsa, bunu aşağıdaki joker karakter içerebilir: % _ [] and [^].

    Not

    Varsayılan değerleri kaydedilir sys.Parameters.default CLR yordamlar yalnızca sütun.Bu sütun için null olacaktır Transact-SQL yordam parametreleri.

  • ÇIKIŞ
    Parametre bir çıktı parametresi gösterir.Bu seçeneğin değeri arama yürütmek deyim için döndürülebilir.OUTPUT parametrelerini, yordamın çağırana değerler döndürmek için kullanın.text, ntext, ve image yordamın bir CLR yordam değilse, parametreleri OUTPUT parametre olarak kullanılamaz. Yordamın bir CLR yordam değilse, OUTPUT anahtar sözcüğü kullanan bir çıkış parametresi imleç yer tutucu olabilir.Kullanıcı tanımlı tablo türü bir saklı yordam OUTPUT parametresi olarak belirtilemez.

  • SALT OKUNUR
    Parametre olamaz güncelleştirildi veya yordamın gövdesi içinde değiştirilmiş olduğunu gösterir.Parametre türü kullanıcı tanımlı tablo türü, READONLY belirtilmeli.

  • YENİDEN DERLE
    That indicates Database Engine Bu yordam ve yordamın için bir plan zamanında derlendi önbellek yapar. FOR çoğaltma belirtilirse, bu seçenek kullanılamaz.CLR saklı yordamlar için RECOMPILE belirtilemez.

    ' Ne Database Engine saklı yordam içindeki tek bir sorgu planları'nı iptal etmek için , RECOMPILE sorgu ipucu Ek Yardım düğmesini kullanın. Daha fazla bilgi için bkz:Sorgu ipuçları (Transact-SQL).Yalnızca bir alt küme küme sorgu ait atypical veya geçici değerleri kullanıldığında RECOMPILE sorgu ipucu kullanmak saklı yordam.

  • ŞİFRELEME
    Gösterir SQL Server CREATE PROCEDURE deyiminin özgün metin obfuscated bir biçime dönüştürür. Gizleme hile şaka çıktısını doğrudan herhangi bir katalog görünümlerinde görünür durumda değilse SQL Server. Sistem tabloları veya veritabanı dosyalarına erişimi olan kullanıcılar, obfuscated metin alamıyor.Ancak, metin, ya da sistem tabloları üzerinde ayrıcalıklı kullanıcılar için kullanılabilir DAC bağlantı noktası veya doğrudan access veritabanı dosyaları.Ayrıca, bir hata ayıklayıcı için sunucu işleminin ekleyebileceğini kullanıcılar, şifresi çözülen yordamı zamanında bellekten alabilirsiniz.Sistem meta verilere erişme hakkında daha fazla bilgi için bkz: Meta veriler görünürlük yapılandırma.

    CLR saklı yordamlar için bu seçeneği geçersiz.

    Bu seçenek kullanılarak oluşturulan yordamlar bir parçası olarak yayımlanamaz. SQL Server Çoğaltma.

  • yürütmek İLERLEDİKÇE
    Güvenlik içeriği yürütmek hangi belirtir saklı yordam.

    Daha fazla bilgi için bkz:yan tümce (Transact-SQL) yürütmek.

  • ÇOĞALTMA İÇİN
    Çoğaltma için oluşturulan depolanmış yordamlar üzerinde abone yürütülemiyor belirtir.FOR REPLICATION seçeneği ile oluşturulan BIR saklı yordam, bir saklı yordamın filtre olarak kullanılır ve çoğaltma sırasında yürütülür.FOR çoğaltma belirtilirse parametreleri bildirilemez.CLR saklı yordamlar için çoğaltma IÇIN belirtilemez.Yordamlar IÇIN çoğaltma ile oluşturulan RECOMPILE seçeneği göz ardı edilir.

    Bir FOR çoğaltma yordamı bir nesne türü gerekir rf in sys.Objects and sys.Procedures.

  • <sql_statement>
    Bir veya daha fazla Transact-SQL yordamda dahil edilecek deyimleri'ı tıklatın. Geçerli olan bazı sınırlamalar hakkında daha fazla bilgi için Açıklamalar bölümüne bakın.

  • DıŞ ADassembly_name**.** class_name**.method_name
    Specifies the method of a .NET Framework assembly for a CLR stored procedure to reference.class_name must be a valid SQL Server identifier and must exist as a class in the assembly.If the class has a namespace-qualified name that uses a period (
    .) to separate namespace parts, the class name must be delimited by using brackets ([]) or quotation marks (""**).Belirtilen yöntem, sınıf statik bir yöntem olmalıdır.

    Not

    Varsayılan olarak, SQL Server CLR yürütmek kod uygulanamıyor. Oluşturabilir, değiştirebilir ve ortak dil çalışma zamanı modülü başvuran veritabanı nesnelerini bırakın; ancak, bu başvuruları yürütülemiyor. SQL Server etkinleştirene kadar clr etkin seçeneği.Seçeneği etkinleştirmek için kullanın. sp_configure.

Remarks

Önceden tanımlanmış en büyük boyut bir saklı yordam vardır.

Kullanıcı tanımlı bir saklı yordam, yalnızca geçerli veritabanında oluşturulabilir.Geçici yordamlar bir özel durum olduklarından, her zaman oluşturulur tempdb.Bir şema adı belirtilmezse, varsayılan şemayı yordamı oluşturma kullanıcının kullanılır.Şemaları hakkında daha fazla bilgi için bkz: Kullanıcı şeması ayırma.

CREATE PROCEDURE deyim ile diğer birleştirilemez Transact-SQL tek bir toplu iş deyimlerinde.

Varsayılan olarak, null parametreleridir.Parametre değeri NULL olarak geçirilir ve bu parametre, bir ALTER tablo veya CREATE tablo içinde kullanılan deyim, başvurulan sütun, boş değerlere izin vermiyor demektir, Database Engine bir hata üretir. Için boş değerlere izin vermeyen bir sütuna NULL geçirmeden önlemek için , programlama mantığının yordama ekleyin veya tablo, CREATE veya ALTER tablo VARSAYıLAN anahtar sözcüğünü kullanarak, sütun için varsayılan bir değer kullanın.

Açık olarak NULL belirtmek veya geçici bir tablodaki her sütun için NOT NULL öneririz.ANSI_DFLT_ON ve ANSI_DFLT_OFF seçenekleri biçimini denetleme Database Engine NULL veya NOT NULL öznitelikleri, bu öznitelikleri tablo, CREATE veya ALTER tablo deyiminde belirtilen sütunlara atar. Bağlantı bu seçenekler yordamı oluşturulan bağlantısı için farklı ayarlara sahip bir saklı yordam çalıştırılır, ikinci bağlantı oluşturulmuş tablo sütunlarından farklı null atanabilirlik vardır ve farklı davranışlar gösterir.NULL veya NOT NULL her sütun için yürütmek tüm bağlantılar için aynı null atanabilirlik kullanarak oluşturulan geçici tablolar açıkça belirtilen saklı yordam.

küme Seçenekleri'ni kullanma

The Database Engine saves the settings of both küme QUOTED_IDENTIFIER and küme ANSI_NULLS when a Transact-SQL saklı yordam is created or modified. Özgün bu ayarlar, saklı yordam çalıştırıldığında kullanılır.Bu nedenle, saklı yordam çalıştırdığında küme QUOTED_IDENTIFIER ve küme ANSI_NULLS istemci oturum ayarları dikkate alınmaz.Saklı yordam oluşturulduğunda veya değiştirildiğinde, diğer küme seçenekleri (küme ARITHABORT gibi küme ANSI_WARNINGS veya küme ANSI_PADDINGS kaydedilmez.saklı yordam mantığı, belirli bir ayar bağlıysa, uygun ayarı güvence altına almak için bu yordamın başlangıcında bir küme deyim içerir.Bir küme deyim, saklı bir yordam çalıştırıldığında, bu ayar yalnızca, saklı yordam çalışması bitinceye kadar etkin kalır.Ayarı, ardından çağrıldığında, saklı yordam olan değerine geri yüklenir.Bu saklı yordam mantığı etkilemeden istedikleri seçeneklerini ayarlamak bağımsız istemcileri etkinleştirir.

Not

ANSI_WARNINGS bir saklı yordamda, kullanıcı tanımlı bir işlev parametresi geçirdiğinizde veya bildirdiğinizde, ödenen değil ve küme toplu deyimi içinde değişkenleri.Örneğin, bir değişken olarak tanımlanmış olması durumunda char(3)ve üç karakterden daha büyük bir değere ayarlanırsa verileri tanımlı boyutunu ve INSERT kesiliyor veya UPDATE deyim başarılı.

CLR ile parametreler kullanılarak yordamlar depolanan...

CLR saklı yordamı parametreleri skaler herhangi biri olabilir. SQL Server Sistem veri türleri.

Için Database Engine .NET Framework'aşırı yüklü olduğunda doğru yönteme başvurmak için , yöntem belirtilen <method_specifier> aşağıdaki özelliklere sahip olmalıdır:

  • Statik bir yöntem bildirilmesi.

  • Aynı sayıda parametre yordamın parametreleri olarak alırsınız.

  • Bir kurucu veya alt sınıfın yıkıcı olmayabilir.

  • Veri türlerini ilgili parametreleri ile uyumlu olan ve parametre türleri'ni kullanmak SQL Server yordam. Eşleştirme hakkında daha fazla bilgi için SQL Server veri türlerinin .NET Framework veri türleri için bkz: CLR parametre veri eşleme.

  • Ya da void türde bir değer döndürür. SQLInt32, SQLInt16, System.Int32, veya System.Int16.

  • OUTPUT belirli parametresi bildirim belirtildiğinde, başvuru, değeri değiştirmez parametrelerinin döndürür.

Saklı yordamlar hakkında bilgi alma

Tanımını görüntülemek için bir Transact-SQL saklı yordam, kullanın sql_dependencies katalog, yordamın bulunduğu veritabanı görünümünde.

Örneğin:

USE AdventureWorks;
GO
SELECT definition 
FROM sys.sql_modules 
JOIN sys.objects ON sys.sql_modules.object_id = sys.objects.object_id AND TYPE = 'P';

Not

Metin ŞIFRELEME seçeneği ile oluşturulan bir saklı yordam kullanarak görüntülenemiyor sql_dependencies kataloğunu görüntüleyin.

Özet Grafik raporu için bir yordam tarafından başvurulan nesneler hakkında sorgu sys.sql_expression_dependencies görünümü katalog veya kullanın.sys.dm_sql_referenced_entities and sys.dm_sql_referencing_entities.

Saklı yordamları CLR hakkındaki bilgileri görüntülemek için kullanmak sys.assembly_modules katalog, yordamın bulunduğu veritabanı görünümünde.

Bir saklı yordamda tanımlanan parametreler hakkında bilgi görüntülemek için , kullanan sys.Parameters katalog, yordamın bulunduğu veritabanı görünümünde.

Ertelenen ad çözümlemesi

Henüz yok tablolara başvuran depolanmış yordamlar oluşturabilirsiniz.Oluşturma sırasında saat, yalnızca bir sözdizimi denetimi yapılmaz.Ilk kez gerçekleştirildiğinde kadar saklı yordam derlendi.Derleme sırasında çözümlenen saklı yordam içinde başvurulan tüm nesneleridir.Bu nedenle, mevcut olmayan tablolara başvuran doğru bir saklı yordamın başarıyla oluşturulabilir; ancak, saklı yordam, çalışma sırasında başarısız olur saat başvurulan tablolar yoksa.Daha fazla bilgi için bkz:Ertelenen ad çözümlemesi ve derleme.

Saklı yordamları çalıştırma

Zaman, yürütmek kullanıcı tanımlı saklı yordam, bir toplu iş veya kullanıcı tanımlı bir saklı yordam veya işlev gibi bir modül içinde bir Şema adlı depolanmış yordam adı niteleme öneririz.

Saklı yordam, bunları kabul etmek için yazılmışsa, parametre değerlerini sağlanabilir.Sağlanan değer, bir sabit veya değişken olmalıdır.Parametre değeri olarak, bir işlev adı belirtemezsiniz.Kullanıcı tanımlı değişkenleri olabilir veya Sistem değişkenleri (SPıD'NIN @@ gibi.

Daha fazla bilgi için bkz:Yürütülen Saklý Yordamlarý (Veritabanı Altyapısı).

Bir yordamın ilk kez çalıştırıldığında, verileri almak için uygun bir erişim planı belirlemek üzere derlenir.saklı yordam sonraki yürütme planı önbelleğinde kalır, bir önceden oluşturulan planı yeniden Database Engine. Daha fazla bilgi için bkz:Yürütme planı önbelleğe alma ve yeniden.

Imleç veri türü kullanan parametreleri

Transact-SQL saklı yordamları kullanabilirsiniz imleç verileri yalnızca OUTPUT parametreleri yazın.If the imleç data type is specified for a parameter, both the VARYING and OUTPUT parameters are required.VARYING anahtar sözcük için bir parametre belirtilmemişse, veri türü olmalıdır imleç ve OUTPUT anahtar belirtilmelidir.Daha fazla bilgi için bkz:Imleç veri türü bir OUTPUT parametre kullanma.

Geçici saklý yordamlarý

The Database Engine supports two types of temporary procedures: Yerel ve genel. Yerel ve geçici bir yordam, yalnızca kendisini oluşturan bağlantı için görülebilir.Genel olarak geçici BIR yordam, tüm bağlantılar için kullanılabilir.Yerel geçici yordamlar, geçerli sonunda otomatik olarak bırakılır oturum.Genel geçici yordamları, yordamın kullanarak en son oturumun sonunda bırakılır.Daha fazla bilgi için bkz:Saklý Yordamlarý (Veritabanı Altyapısı) oluşturma.

Otomatik olarak yürütülen yordamlar depolanan...

Bir veya daha fazla saklı yordamlar, otomatik olarak çalıştırabilirsiniz, SQL Server başlatır. Saklı yordamlar sistem yöneticiniz tarafından oluşturulmasını Yönetici veritabanı ve altında yürütüldü.sysadmin sabit sunucu rolü bir arka plan işlemi olarak.Yordamlar, giriş veya çıkış parametreleri olamaz.Daha fazla bilgi için bkz:Saklý Yordamlarý otomatik yürütme.

Saklı yordam iç içe geçme

Saklı yordamlar iç içe kullanılabilir.Bu, başka saklı yordam çağırabileceğiniz anlamına gelir.Çağrılan yordam çalışan ve indirildiği başladığında çağrılan yordam çalışmasını bitirdiğinde, iç içe düzey artırılır.Saklı yordamlar, 32 düzeye kadar iç içe kullanılabilir.Daha fazla bilgi için bkz:Iç içe geçirilmesi yordamlar depolanan....

Derlenmiş saklı yordam boyutunu tahmin etmek için , performans izleyicisi aşağıdaki sayaçları kullanın.

Performans izleyicisi nesnesi adı

Performans izleyicisi sayaç adı

SQL Server için: Önbellek nesne planlayın.

Önbellek isabet oranı

 

Önbellek sayfası

 

Önbellek nesnesi sayaçları *

* Bu sayaçlar, sql, yordamlar, Tetikleyiciler vb.) hazır, ad hoc sql önbellek nesneleri için çeşitli kategorileri vardır.

Daha fazla bilgi için bkz:SQL Server, planı önbellek nesnesi.

<sql_statement> Sınırlamaları

küme SHOWPLAN_TEXT ve küme SHOWPLAN_ALL dışında saklı yordam içinde herhangi bir küme deyim belirtilebilir.Bu toplu iş iş iş yalnızca tablolarda olmalıdır.Seçilen küme seçeneği etkin olarak saklı yordam yürütülmesi sırasında kalır ve daha sonra önceki ayarına geri döner.

saklı yordam sahibi dışındaki kullanıcılar saklı yordamı kullanmak için saklı yordam içinde CREATE, ALTER, veya DROP deyimi, DBCC ifadeleri, yürütmek ve dinamik SQL deyimleri tüm veri tanımlama dili (DDL) deyimleri kullanılan nesne adları nesnesi şemasının adı ile uygun gerekir.Daha fazla bilgi için bkz:(Veritabanı Altyapısı) Saklý Yordamlarý tasarlama.

İzinler

CREATE PROCEDURE izin veritabanındaki ve yordam oluşturulacağı şema ALTER izni gerektirir.

CLR saklı yordamlar için başvurulan derleme sahipliğini gerektirir. <method_specifier>, veya bu derleme BAşVURULAR izni.

Örnekler

C.Basit bir yordamı kullanma

Aşağıdaki saklı yordam tüm çalışanları verir (sağlanan ilk ve son adları), kendi iş unvanları ve bir görünümde, departman adlarını.Bu saklı yordam parametreleri kullanın.

The uspGetEmployees saklı yordam can be executed in the following ways:

b.Basit bir yordamın parametrelerini kullanma

Aşağıdaki saklı yordam yalnızca belirtilen çalışanın verir (sağlanan ad ve soyad), her başlığı ve her departman adı bir görünümde.Bu saklı yordam, geçirilen parametreler için tam eşleşenleri kabul eder.

The uspGetEmployees saklı yordam can be executed in the following ways:

c.Basit bir yordam joker karakter parametreleriyle kullanma

Saklı yordamını yalnızca belirtilen çalışanları verir (sağlanan ilk ve son adları), başlıklar ve bunların bölümlerden bir görünüm.Bu saklı yordam desen geçirilen parametre ile eşleşen veya sağlanmayan, önceden ayarlanmış varsayılan kullanır (harfi ile başlayan adları son D).

The uspGetEmployees2 saklı yordam can be executed in many combinations. Yalnızca birkaç bileşimlerini burada gösterilir:

d.Birden fazla sonuç döndürme küme

Aşağıdaki saklı yordam iki sonuç kümesi verir.

USE AdventureWorks;
GO
CREATE PROCEDURE uspNResults 
AS
SELECT COUNT(ContactID) FROM Person.Contact
SELECT COUNT(CustomerID) FROM Sales.Customer;
GO

e.OUTPUT parametreleri kullanma

Aşağıdaki örnek oluşturur uspGetList saklı yordam. Bu yordamlar, belirtilen bir tutarı aşan fiyatlarını olan ürünlerin listesini verir.Örnek kullanarak, birden çok gösterir SELECT ifadeler ve birden çok OUTPUT Parametreler. OUTPUT parametreleri, harici bir yordam, bir toplu iş veya birden fazla etkinleştir Transact-SQL bir değer erişmek için deyim küme yordamı yürütme sırasında.

yürütmek uspGetList listesini döndürmek için Adventure Works daha az Maliyet (Bisikletleri) ürünleri daha $700. The OUTPUT parameters @Cost and @ComparePrices are used with akış denetimli dil to return a message in the Messages window.

Not

OUTPUT değişken, yordamın oluşturulduğunda ve değişken kullanıldığında tanımlanmalıdır.The parameter name and variable name do not have to match; however, the data type and parameter positioning must match, unless @ListPrice= variable is used.

Kısmi bir sonuç kümesi aşağıdadır:

Product                                            List Price
-------------------------------------------------- ------------------
Road-750 Black, 58                                 539.99
Mountain-500 Silver, 40                            564.99
Mountain-500 Silver, 42                            564.99
...
Road-750 Black, 48                                 539.99
Road-750 Black, 52                                 539.99

(14 row(s) affected)

These items can be purchased for less than $700.00.

f.WITH yeniden DERLE) seçeneğini kullanma

The WITH RECOMPILE yan tümce is helpful when the parameters supplied to the procedure will not be typical, and when a new execution plan should not be cached or stored in memory.

g.WITH şifreleme seçeneğini kullanma

Aşağıdaki örnek oluşturur HumanResources.uspEncryptThis saklı yordam.

The WITH ENCRYPTION option prevents the definition of the saklı yordam from being returned, as shown by the following examples.

Çalışma sp_helptext:

EXEC sp_helptext 'HumanResources.uspEncryptThis';

Here is the result set.

The text for object 'HumanResources.uspEncryptThis' is encrypted.

Doğrudan sorgu sys.sql_modules Katalog görüntüle:

USE AdventureWorks;
GO
SELECT definition FROM sys.sql_modules
WHERE object_id = OBJECT_ID('HumanResources.uspEncryptThis');

Here is the result set.

definition
----------------------
NULL

(1 row(s) affected)

h.Ertelenen ad çözümlemesi'ni kullanma

Aşağıdaki örnek oluşturur uspProc1 yordam. Bu, ertelenen ad çözümlemesini kullanır.saklı yordam, ancak oluşturulan tablo diğer bir deyişle, başvurulan mu derleme zamanında yok.Ancak, yordam çalıştırıldığında tablosunda bulunması gerekir.

saklı yordam oluşturulduğunu doğrulamak için aşağıdaki sorguyu çalıştırın:

Here is the result set.

definition
-----------------------------------------------------------------------
CREATE PROCEDURE uspproc1
AS
    SELECT column1, column2 FROM table_does_not_exist

(1 row(s) affected)

İ.yürütmek AS'ni kullanarak yan tümce

Kullanarak, aşağıdaki örnekte gösterildiği yürütmek İLERLEDİKÇE saklı yordam yürütülebilecek güvenlik bağlamı belirtmek için yan tümce. Örneğin, seçeneği CALLER yordamı, onu çağıran kullanıcı bağlamında yürütülebilecek belirtir.

j.Bir CLR oluşturma saklı yordam

Aşağıdaki örnek oluşturur GetPhotoFromDB saklı yordamını başvuran GetPhotoFromDB yöntem LargeObjectBinary içindeki sınıf HandlingLOBUsingCLR derleme. Saklı yordam oluşturulduğunda önce HandlingLOBUsingCLR derleme yerel veritabanında kaydedilir.

CREATE ASSEMBLY HandlingLOBUsingCLR
FROM '\\MachineName\HandlingLOBUsingCLR\bin\Debug\HandlingLOBUsingCLR.dll';
GO
CREATE PROCEDURE dbo.GetPhotoFromDB
(
    @ProductPhotoID int,
    @CurrentDirectory nvarchar(1024),
    @FileName nvarchar(1024)
)
AS EXTERNAL NAME HandlingLOBUsingCLR.LargeObjectBinary.GetPhotoFromDB;
GO

k.Bir OUTPUT imleç parametresini kullanma

OUTPUT imleç parametreleri, bir saklı yordamın geri çağıran bir toplu iş, saklı yordam veya tetikleyiciyi için yerel olan bir imleç geçirmek için kullanılır.

Ilk olarak bildirir ve üzerinde bir imleç açar yordamı oluşturmak Currency TABLO:

Sonra bir yerel imleç değişken bildirir, imleci yerel bir değişkene atamak için bu yordamı çalıştırır ve sonra da imleci satırları getirir bir toplu iş çalıştırın.

See Also

Reference

Other Resources