Share via


Arayan bir saklı yordam

The SQL Server Native istemci ODBC driver supports both the ODBC CALL escape sequence and the Transact-SQL yürütmek deyim for executing stored procedures; the ODBC CALL escape sequence is the preferred yöntem. ODBC sözdizimi kullanarak, saklı yordamlar, döndürülen kodları'nı almak bir uygulama sağlar ve SQL Server Yerel istemci ODBC sürücüsü de özgün olarak çalıştıran bilgisayarlar arasında uzaktan yordam (RPC) çağrılarını göndermek için geliştirilen bir protokol'nı kullanmak için getirilmiştir SQL Server. Bu bir RPC protokol, parametre işleme ve sunucuda tamamlandı bildirimi ayrıştırma çoğunu ortadan kaldırarak performansı artırır.

Not

Ararken SQL Server saklı yordamlar, ODBC ile adlandırılmış parametreler kullanan parametre adları '@' karakteri ile başlamalıdır. Bu bir SQL Server Belirli bir kısıtlama. The SQL Server Native istemci ODBC driver enforces this restriction more strictly than the Microsoft Data Access Components (MDAC).

Bir yordamı çağırmak için ODBC CALL çıkış sırası) verilmiştir:

{[?=]callprocedure_name[([parameter][,[parameter]]...)]}

burada procedure_name ve yordam adı belirtir.Parametre , yordamın parametre belirtir.

Bir yordam veya daha fazla parametre geçersiz olabilir.Bir değer döndürebilir (isteğe bağlı parametre işaretçisi gösterilmiş? sözdizimi başlangıcında =).Parametre bir giriş veya bir giriş/çıkış parametresi, bir parametre işaretçisi bir hazır bilgi ya da olabilir.Parametre bir çıktı parametresi, çünkü çıktı bilinmeyen bir parametre işaretçisi olması gerekir.Parametre imleyicileri ile bağlanmalıdır: SQLBindParameter yordam çağrısı deyim yürütülmeden önce.

Giriş ve giriş/çıkış parametrelerini yordam çağrıları ' atlanabilir.Bir yordamın parantezli ancak hiçbir parametre olmadan çağrılırsa, ilk parametre için varsayılan değer kullanılacak veri kaynağı söyler.Örneğin:

{Arama procedure_name**( )**}

Yordamı, herhangi bir parametre yoksa, bu yordamı başarısız olabilir.Bir yordamın ayraçlar çağrılırsa, sürücü herhangi bir parametre değeri 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ş parametresi vardır.Ilk parametresini atlar, ikinci parametre için bir hazır bilgi sağlar ve bir parametre işaretçisi, üçüncü, dördüncü ve beşinci kullanır InsertOrder çağrısı aşağıdaki parametreleri.(Parametreler sırayla, değeri 1 ile başlayarak numaralandırılır.)

{call InsertOrder(, 10, ?, ?, ?)}

Parametre belirtilmezse, onu diğer parametrelerinden sınırlayan virgül hala görünmelidir unutmayın.Bir giriş veya giriş/çıkış parametresi belirtilmezse, yordam parametresinin varsayılan değeri kullanır.Giriş veya giriş/çıkış parametresinin varsayılan değeri belirtmek için başka SQL_DEFAULT_PARAM parametreye bağlı arabellek uzunluğu/göstergesi değerini ayarlamak için ve VARSAYıLAN anahtar sözcüğünü kullanmayı yollarıdır.

Sürücü, bir giriş/çıkış parametresi atlandığında veya parametre için bir sabit değer belirttiğinizde, çıkış değeri atar.Benzer şekilde, yordamın dönüş değeri için parametre işaretçisi girilmediği takdirde, sürücü dönüş değeri atar.Son olarak, bir uygulama için bir değer döndüren bir yordam bir dönüş değeri parametresi belirtir, sürücü SQL_NULL_DATA parametreye bağlı uzunluğu/göstergesi arabellek değerini ayarlar.

CALL ekstreleri de sınırlayıcıları

The SQL Server Native istemci ODBC driver by default also supports a compatibility option specific to the ODBC { CALL } escape sequence. Sürücü, yalnızca tek bir CALL ekstreleri kabul küme tüm saklı yordam adı sınırlayan çift tırnak işareti:

{ CALL "master.dbo.sp_who" }

Varsayılan olarak SQL Server Yerel istemci ODBC sürücüsü de ISO kurallarýna ve her tanıtıcısı, çift tırnak işaretleri içine ÇAĞıR ifadeleri kabul eder:

{ CALL "master"."dbo"."sp_who" }

Varsayılan ayarları ile ancak çalıştırırken SQL Server Yerel istemci ODBC sürücüsü tanımlayıcıları, yasal olarak ISO standardı belirtilmemiş karakterler içeren tanımlayıcıları tırnak içinde bir tanımlayıcı ya da form kullanarak desteklemiyor. Örneğin, sürücü, adlı saklı yordam erişemiyor "My.Proc" bir CALL deyim kullanarak tanımlayıcıları tırnak içine:

{ CALL "MyDB"."MyOwner"."My.Proc" }

Bu deyim sürücüsü tarafından değerlendirilir:

{ CALL MyDB.MyOwner.My.Proc }

Sunucu bir bağlantılı sunucu adlı bir hata oluşturur. MyDB yok.

Bracketed tanımlayıcıları kullanırken sorun yok, bu deyim doğru olarak değerlendirilir:

{ CALL [MyDB].[MyOwner].[My.Table] }

See Also

Concepts