Saklı yordam çağırma
SQL ServerYerel istemci odbc sürücüsü hem odbc call çıkış sırasını destekler ve Transact-SQL execute deyimi yürütme saklı yordamlar; odbc call çıkış sırası için tercih edilen yöntemdir. odbc sözdizimi kullanarak saklı yordamlar dönüş kodları almak uygulama sağlar ve SQL Serveryerel istemci odbc sürücüsü de başlangıçta uzak yordam (rpc) çağrıları çalıştıran bilgisayarlar arasındaki göndermek için geliştirilen bir iletişim kuralını kullanmayı getirilmiş SQL Server. Bu rpc iletişim kuralı, çok parametre işleme ve sunucuda yapılan ifade ayrıştırma ortadan kaldırarak performansı artırır.
[!NOT]
Ararken SQL Serversaklı yordamlar odbc ile adlandırılmış parametreleri kullanarak (daha fazla bilgi için bkz Bağlama Parameters (adlandırılmış parametreleri) adıyla), parametre adları ile başlamalıdır '@' karakter. Bu bir SQL Serverbelirli kısıtlama. SQL ServerYerel istemci odbc sürücüsü daha kesinlikle Microsoft Data Access Components (mdac) daha bu kısıtlamayı zorlar.
Bir yordamı çağırmak için odbc call çıkış sırası şöyledir:
{?=call procedure_name[(parameter]**,**parameter]...)]}
Burada procedure_name yordam adını belirtir ve parametresi yordam parametresi belirtir. Adlandırılmış parametreleri yalnızca odbc call çıkış sırasını kullanarak deyimleri desteklenir.
Yordam, sıfır veya daha fazla parametre olabilir. Ayrıca bir değer döndürebilirsiniz (isteğe bağlı parametre işaretçisi tarafından belirtildiği şekilde? sözdizimi start =). Parametre bir giriş veya bir giriş/çıkış parametresi, bir sabit veya bir parametre işaretçisi olabilir. Parametresi, çıktı parametresi ise, çünkü çıkışı bilinmeyen bir parametre işaretçisi olmalıdır. Parametre imleyicileri bağlı, ile SQLBindParameter yordam çağrısı önce deyimi yürütülür.
Giriş ve giriş/çıkış parametreleri yordam çağrılarını atlanabilir. Yordam parantez ancak herhangi bir parametre olmadan çağrılırsa, sürücü için ilk parametre varsayılan değeri kullanmak için veri kaynağı bildirir. Örneğin:
{call procedure_name**()**}
Yordam parametreleri varsa, yordam başarısız. Yordam parantez çağrılırsa, sürücü herhangi bir parametre değerleri göndermez. Örneğin:
{call procedure_name}
Hazır bilgi giriş ve giriş/çıkış parametreleri yordam çağrıları için belirtilebilir. Örneğin, yordam InsertOrder beş giriş parametreleri vardır. InsertOrder şu çağrıyı ilk parametresini atlar, ikinci parametre için bir hazır bilgi sağlar ve üçüncü, dördüncü ve beşinci bir parametre işaretçisi kullanan parametreleri. (Parametreler ardışık olarak değeri 1 ile başlayarak numaralandırılmıştır.)
{call InsertOrder(, 10, ?, ?, ?)}
{call InsertOrder(, 10, ?, ?, ?)}
Not parametre atlanırsa, diğer parametreleri sınırlayan virgül hala görünmesi gerekir. Bir giriş veya giriş/çıkış parametresi belirtilmezse, yordam parametre varsayılan değeri kullanır. Bir giriş veya giriş/çıkış parametresi varsayılan değerini belirtmek için başka yollar ayarlamak parametreye bağlı uzunluğu/göstergesi arabellek değerini belirlemek için veya varsayılan anahtar vardır.
Bir giriş/çıkış parametresi atlandığında veya sabit değer parametre için sağlanan sürücü çıkış değeri atar. Benzer şekilde, parametre işaretçisi bir yordamın dönüş değeri atlanırsa, sürücü dönüş değeri atar. Son olarak, bir uygulama bir dönüş değeri parametresi için bir değer döndürmeyen bir yordam belirtiyorsa, sürücü sql_null_data parametreye bağlı uzunluğu/göstergesi arabellek değerini ayarlar.
Sınırlayıcıları içinde ÇAĞıR deyimleri
SQL ServerYerel istemci odbc sürücüsü varsayılan olarak da odbc {call} çıkış sırası için özel bir uyumluluk seçeneği destekler. Sürücü ÇAĞıR deyimleri sınırlayan tüm saklı yordam adı çift tırnak işaretleri yalnızca tek bir dizi kabul eder.
{ CALL "master.dbo.sp_who" }
{ CALL "master.dbo.sp_who" }
Varsayılan olarak SQL Serveryerel istemci odbc sürücüsü, ISO kuralları izleyin ve her tanımlayıcı çift tırnak işareti içine ÇAĞıR deyimleri de kabul:
{ CALL "master"."dbo"."sp_who" }
{ CALL "master"."dbo"."sp_who" }
Varsayılan ayarlarla, ancak çalıştırıldığında SQL Serveryerel istemci odbc sürücüsü, tanımlayıcılar yasal olarak ISO standardına göre belirtilen karakterler içeren tanımlayıcıları ile ya da teklif edilen tanımlayıcı formu kullanarak desteklemez. Örneğin, sürücü adlı bir saklı yordamınız erişemiyor "My.Proc" call deyimi ile tırnak tanımlayıcıları:
{ CALL "MyDB"."MyOwner"."My.Proc" }
{ CALL "MyDB"."MyOwner"."My.Proc" }
Bu deyimi, bir sürücü yorumlanır:
{ CALL MyDB.MyOwner.My.Proc }
{ CALL MyDB.MyOwner.My.Proc }
Sunucu, adlı bir bağlı sunucu hata yükseltir MyDB yok.
Bracketed tanımlayıcıları kullanırken sorun yok, bu ifade doğru şekilde yorumlanır:
{ CALL [MyDB].[MyOwner].[My.Table] }
{ CALL [MyDB].[MyOwner].[My.Table] }