Aracılığıyla paylaş


Prosedür Çağrıları

Yordam, veri kaynağında depolanan yürütülebilir bir nesnedir. Genellikle, önceden derlenmiş bir veya daha fazla SQL deyimidir. Bir prosedürü çağırmak için kaçış dizisi şudur:

{[?=]callprocedure-name[([parameter][,[parameter]]... )]}

burada yordam-adı bir yordamın adını, parametre ise bir yordam parametresini belirtir.

Yordam çağrısı kaçış dizisi hakkında daha fazla bilgi için Ek C: SQL Dil Bilgisi'ndeki Yordam Çağrısı Kaçış Dizisi kısmına bakın.

Bir yordamda sıfır veya daha fazla parametre olabilir. Söz diziminin başındaki isteğe bağlı parametre işaretçisi ?= tarafından gösterildiği gibi bir değer de döndürebilir. Parametre bir giriş veya giriş/çıkış parametresiyse, bir parametre işaretçisi ya da değişmez değer olabilir. Ancak, bazı veri kaynakları değişmez parametre değerlerini kabul etmediğinden, birlikte çalışabilen uygulamalar her zaman parametre işaretleyicileri kullanmalıdır. Parametre bir çıkış parametresiyse, parametre işaretçisi olmalıdır. Prosedür çağrısı ifadesi yürütülmeden önce parametre işaretçileri SQLBindParameter ile bağlanmalıdır.

Giriş ve giriş/çıkış parametreleri yordam çağrılarından atlanabilir. Bir yordam parantez içinde çağrılır ancak {call procedure-name()} gibi herhangi bir parametre olmadan çağrılırsa, sürücü veri kaynağına ilk parametre için varsayılan değeri kullanma talimatı verir. Yordamın herhangi bir parametresi yoksa, bu, yordamın başarısız olmasına neden olabilir. {call procedure-name} gibi bir yordam parantez olmadan çağrılırsa, sürücü herhangi bir parametre değeri göndermez.

Prosedür çağrılarında giriş ve girdi/çıktı parametreleri için değişmez değerler belirtilebilir. Örneğin, InsertOrder yordamının beş giriş parametresi olduğunu varsayalım. Aşağıdaki InsertOrder çağrısı ilk parametreyi atlar, ikinci parametre için bir değişmez değer sağlar ve üçüncü, dördüncü ve beşinci parametreler için bir parametre işaretçisi kullanır:

{call InsertOrder(, 10, ?, ?, ?)}   // Not interoperable!  

Bir parametre atlanırsa, bunu diğer parametrelerden sınırlandıran virgüllerin görünmeye devam etmesi gerektiğine dikkat edin. Bir giriş veya giriş/çıkış parametresi atlanırsa, yordam parametresinin varsayılan değerini kullanır. Giriş veya giriş/çıkış parametresinin varsayılan değerini belirtmenin bir diğer yolu da parametreye bağlı uzunluk/gösterge arabelleğinin değerini SQL_DEFAULT_PARAM olarak ayarlamaktır.

Bir giriş/çıkış parametresi atlanırsa veya parametre için bir değişmez değer sağlanırsa, sürücü çıkış değerini atar. Benzer şekilde, bir prosedürün dönüş değeri için parametre işaretçisi atlanırsa, sürücü dönüş değerini atar. Son olarak, bir uygulama değer döndürmeyen bir yordam için bir dönüş değeri parametresi belirtirse, sürücü parametreye bağlı uzunluk/gösterge arabelleğinin değerini SQL_NULL_DATA olarak ayarlar.

PARTS_IN_ORDERS prosedürünün belirli bir parça numarasını içeren siparişlerin listesini içeren bir sonuç kümesi oluşturduğunu varsayın. Aşağıdaki kod, 544 numaralı parça için bu yordamı çağırır:

SQLUINTEGER   PartID;  
SQLINTEGER    PartIDInd = 0;  
  
// Bind the parameter.  
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, 0, 0,  
                  &PartID, 0, PartIDInd);  
  
// Place the department number in PartID.  
PartID = 544;  
  
// Execute the statement.  
SQLExecDirect(hstmt, "{call PARTS_IN_ORDERS(?)}", SQL_NTS);  

Bir veri kaynağının yordamları destekleyip desteklemediğini belirlemek için, bir uygulama SQL_PROCEDURES seçeneğiyle SQLGetInfo çağırır.

Yordamlar hakkında daha fazla bilgi için bkz. Yordamlar.