Aracılığıyla paylaş


Doğrudan Yürütme ODBC

Doğrudan yürütme, bir deyimi yürütmenin en basit yoludur. Deyimi yürütme için gönderildiğinde, veri kaynağı bunu bir erişim planında derler ve ardından bu erişim planını yürütür.

Doğrudan yürütme, genellikle çalışma zamanında ifadeleri derleyen ve yürüten tür bağımsız uygulamalar tarafından kullanılır. Örneğin, aşağıdaki kod bir SQL deyimi oluşturur ve bunu tek bir kez yürütür:

SQLCHAR *SQLStatement;  
  
// Build a SQL statement.  
BuildStatement(SQLStatement);  
  
// Execute the statement.  
SQLExecDirect(hstmt, SQLStatement, SQL_NTS);  

Doğrudan yürütme, tek bir kez yürütülecek deyimler için en iyi şekilde çalışır. En büyük dezavantajı, SQL deyiminin her yürütüldüğünde ayrıştırılmasıdır. Ayrıca uygulama, deyimi yürütülene kadar deyimi tarafından oluşturulan sonuç kümesi (varsa) hakkındaki bilgileri alamaz; deyimi iki ayrı adımda hazırlanır ve yürütülürse bu mümkündür.

Bir deyimi doğrudan yürütmek için uygulama aşağıdaki eylemleri gerçekleştirir:

  1. Parametrelerin değerlerini ayarlar. Daha fazla bilgi için bu bölümün devamında yer alan Deyim Parametreleri bölümüne bakın.

  2. SQLExecDirect'i çağırır ve SQL deyimini içeren bir dize geçirir.

  3. SQLExecDirect çağrıldığında, sürücü:

    • SQL deyimini ayrıştırmadan veri kaynağının SQL dil bilgisini kullanacak şekilde değiştirir. Bu, ODBC'deki Kaçış Sıraları'nda ele alınan kaçış dizilerinin değiştirilmesini içerir. Uygulama, SQLNativeSql çağrısı yaparak bir SQL deyiminin değiştirilmiş biçimini alabilir. SQL_ATTR_NOSCAN deyimi özniteliği ayarlanırsa kaçış dizileri değiştirilmez.

    • Geçerli parametre değerlerini alır ve gerektiğinde dönüştürür. Daha fazla bilgi için bu bölümün devamında yer alan Deyim Parametreleri bölümüne bakın.

    • deyimini ve dönüştürülen parametre değerlerini yürütülmek üzere veri kaynağına gönderir.

    • Hataları geri döndürür. Bunlar SQLSTATE 24000 (Geçersiz imleç durumu), SQLSTATE 42000 gibi söz dizimi hataları (Sözdizimi hatası veya erişim ihlali) ve SQLSTATE 42S02 (Temel tablo veya görünüm bulunamadı) gibi anlamsal hataları içerir.