SQLProcedures İşlevi

Uygunluk
Tanıtılan Sürüm: ODBC 1.0 Standartlar Uyumu: ODBC

Özet
SQLProcedures, belirli bir veri kaynağında depolanan prosedür adlarının listesini döndürür. Prosedür , yürütülebilir bir nesneyi veya giriş ve çıkış parametreleri kullanılarak çağrılabilen adlandırılmış bir varlığı tanımlamak için kullanılan genel bir terimdir. Prosedürler hakkında daha fazla bilgi için Prosedürler sayfasına bakınız.

Syntax

  
SQLRETURN SQLProcedures(  
     SQLHSTMT       StatementHandle,  
     SQLCHAR *      CatalogName,  
     SQLSMALLINT    NameLength1,  
     SQLCHAR *      SchemaName,  
     SQLSMALLINT    NameLength2,  
     SQLCHAR *      ProcName,  
     SQLSMALLINT    NameLength3);  

Arguments

StatementHandle
[Giriş] Deyim tanıtıcısı.

Catalogname
[Giriş] Prosedür kataloğu. Bir sürücü bazı tablolar için katalogları desteklerken diğerleri için desteklemiyorsa, örneğin sürücü farklı DBMS'lerden veri alırken, boş bir dizi ("") katalogları olmayan tabloları gösterir. CatalogName bir dizi arama deseni içeremez.

Eğer SQL_ATTR_METADATA_ID ifadesi özniteliği SQL_TRUE olarak ayarlanmışsa, CatalogName tanımlayıcı olarak ele alınır ve durumu anlamlı değildir. Eğer SQL_FALSE ise, CatalogName sıradan bir argümandır; kelime kelimesi kelimesine ele alınır ve durumu önemlidir. Daha fazla bilgi için bkz. Katalog İşlevleri'ndeki Bağımsız Değişkenler.

NameLength1
[Giriş] *CatalogName'nin karakterlerindeki uzunluk.

Şema Adı
[Giriş] Prosedür şema adları için dizi arama deseni. Bir sürücü bazı prosedürler için şemaları desteklerken diğerleri için desteklemiyorsa, örneğin sürücü farklı DBMS'lerden veri aldığında, boş bir dizi ("") şemasız prosedürleri gösterir.

SQL_ATTR_METADATA_ID ifadesi özniteliği SQL_TRUE olarak ayarlanmışsa, SchemaName tanımlayıcı olarak kabul edilir ve durumu anlamlı değildir. Eğer SQL_FALSE ise, SchemaName bir desen değeri argümanıdır; kelime kelimesi kelimesine ele alınır ve durumu önemlidir.

NameLength2
[Giriş] *SchemaName'nin karakterlerindeki uzunluk.

ProcName
[Giriş] Prosedür adları için dizi arama desenleri.

Eğer SQL_ATTR_METADATA_ID ifadesi özniteliği SQL_TRUE olarak ayarlanmışsa, ProcName tanımlayıcı olarak kabul edilir ve durumu anlamlı değildir. Eğer SQL_FALSE ise, ProcName bir desen değeri argümanıdır; kelime kelimesi kelimesine ele alınır ve durumu önemlidir.

NameLength3
[Giriş] *ProcName'nin karakterlerindeki uzunluk.

İadeler

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR ya da SQL_INVALID_HANDLE.

Diagnostics

SQLProcedures SQL_ERROR veya SQL_SUCCESS_WITH_INFO döndürdüğünde, ilişkili bir SQLSTATE değeri, SQL_HANDLE_STMT HandleType ve HandleType ile StatementHandle ile SQLGetDiagRec çağrılarak elde edilebilir. Aşağıdaki tablo, SQLProcedures tarafından sıkça duygulanan SQLSTATE değerlerini listeler ve her birini bu fonksiyon bağlamında açıklar; "(DM)" gösterimi, Sürücü Yöneticisi tarafından döndürülen SQLSTATE açıklamalarından önce gelir. Aksi belirtilmediği sürece, her SQLSTATE değeriyle ilişkili dönüş kodu SQL_ERROR.

SQLSTATE Error Description
01000 Genel uyarı Sürücüye özgü bilgilendirici ileti. (İşlev SQL_SUCCESS_WITH_INFO döndürür.)
08S01 İletişim bağlantısı hatası sürücü ile sürücünün bağlandığı veri kaynağı arasındaki iletişim bağlantısı, işlev işlenmeden önce başarısız oldu.
24000 Geçersiz imleç durumu StatementHandle'da bir imleç açıktı ve SQLFetch veya SQLFetchScroll çağrılmıştı. BU hata, SQLFetch veya SQLFetchScroll SQL_NO_DATA döndürmediyse Sürücü Yöneticisi tarafından döndürülür ve SQLFetch veya SQLFetchScroll SQL_NO_DATA döndürdüyse sürücü tarafından döndürülür.

StatementHandle'da bir imleç açıktı, ancak SQLFetch veya SQLFetchScroll çağrılmamıştı.
40001 Serileştirme hatası Başka bir işlemle kaynak kilitlenmesi nedeniyle işlem geri alındı.
40003 Deyim tamamlama bilinmiyor İlişkili bağlantı bu işlevin yürütülmesi sırasında başarısız oldu ve işlemin durumu belirlenemiyor.
HY000 Genel hata Belirli bir SQLSTATE olmayan ve uygulamaya özgü SQLSTATE tanımlanmayan bir hata oluştu. *MessageText arabelleğinde SQLGetDiagRec tarafından döndürülen hata iletisi, hatayı ve nedenini açıklar.
HY001 Bellek ayırma hatası Sürücü, işlevin yürütülmesini veya tamamlanmasını desteklemek için gereken belleği ayıramadı.
HY008 İşlem iptal edildi StatementHandle için zaman uyumsuz işleme etkinleştirildi. İşlev çağrıldı ve yürütme tamamlanmadan önce StatementHandle üzerinde SQLCancel veya SQLCancelHandle çağrıldı. Ardından işlev StatementHandle üzerinde yeniden çağrıldı.

İşlev çağrıldı ve yürütme tamamlanmadan önce, çok iş parçacıklı bir uygulamadaki farklı bir iş parçacığından StatementHandle üzerinde SQLCancel veya SQLCancelHandle çağrıldı.
HY009 Geçersiz null işaretçi kullanımı SQL_ATTR_METADATA_ID ifadesi özniteliği SQL_TRUE olarak ayarlanmıştı, CatalogName argümanı null işaretçiydi ve SQL_CATALOG_NAME InfoType katalog adlarının desteklendiğini döndürdü.

(DM) SQL_ATTR_METADATA_ID ifadesi özetniteliği SQL_TRUE olarak ayarlanmıştı ve SchemaName veya ProcName argümanı bir null işaretçiydi.
HY010 İşlev dizisi hatası (DM) StatementHandle ile ilişkili bağlantı tanıtıcısı için zaman uyumsuz olarak yürütülen bir işlev çağrıldı. Bu asenkron fonksiyon çağrıldığında hâlâ çalışıyordu.

(DM) SQLExecute, SQLExecDirect veya SQLMoreResults, StatementHandle için çağrıldı ve SQL_PARAM_DATA_AVAILABLE döndürdü. Bu işlev, tüm akış parametreleri için veri alınmadan önce çağrıldı.

(DM) StatementHandle için zaman uyumsuz olarak yürütülen bir işlev (bu işlev değil) çağrıldı ve bu işlev çağrıldığında hala yürütülüyordu.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations veya SQLSetPos, StatementHandle için çağrıldı ve SQL_NEED_DATA döndürdü. Bu işlev, tüm yürütme sırasında veri parametreleri veya sütunları için veri gönderilmeden önce çağrıldı.
HY013 Bellek yönetimi hatası Büyük olasılıkla düşük bellek koşulları nedeniyle, temel alınan bellek nesnelerine erişilemediğinden işlev çağrısı işlenemedi.
HY090 Geçersiz dize veya arabellek uzunluğu (DM) İsim uzunluğu argümanlarından birinin değeri 0'dan küçüktü ancak SQL_NTS'ye eşit değildi.

Ad uzunluğu bağımsız değişkenlerinden birinin değeri, karşılık gelen ad için uzunluk üst sınırını aştı.
HY117 Bilinmeyen işlem durumu nedeniyle bağlantı askıya alındı. Yalnızca bağlantıyı kesme ve salt okunur işlevlere izin verilir. (DM) Askıya alınma durumu hakkında daha fazla bilgi için bkz. SQLEndTran İşlevi.
HYC00 İsteğe bağlı özellik uygulanmadı Bir prosedür kataloğu belirtilmiş ve sürücü veya veri kaynağı katalogları desteklememektedir.

Bir prosedür şeması belirlenmiş ve sürücü veya veri kaynağı şemaları desteklemez.

Prosedür şeması veya prosedür adı için bir dizi arama deseni belirtilmiş olup, veri kaynağı bu argümanlardan biri veya birkaçın arama desenlerini desteklemez.

SQL_ATTR_CONCURRENCY ve SQL_ATTR_CURSOR_TYPE deyimi özniteliklerinin geçerli ayarlarının birleşimi sürücü veya veri kaynağı tarafından desteklenmiyordu.

SQL_ATTR_USE_BOOKMARKS deyimi özniteliği SQL_UB_VARIABLE olarak, SQL_ATTR_CURSOR_TYPE deyimi özniteliği ise sürücünün yer işaretlerini desteklemediği bir imleç türüne ayarlandı.
HYT00 Zaman aşımı süresi doldu Veri kaynağı istenen sonuç kümesini döndürmeden önce sorgu zaman aşımı süresi doldu. Zaman aşımı süresi SQLSetStmtAttr, SQL_ATTR_QUERY_TIMEOUT aracılığıyla ayarlanır.
HYT01 Bağlantı zaman aşımı süresi doldu Veri kaynağı isteği yanıtlamadan önce bağlantı zaman aşımı süresi doldu. Bağlantı zaman aşımı süresi SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT aracılığıyla ayarlanır.
IM001 Sürücü bu işlevi desteklemiyor (DM) StatementHandle ile ilişkili sürücü bu işlevi desteklemez.
IM017 Yoklama zaman uyumsuz bildirim modunda devre dışı bırakıldı Bildirim modeli her kullanıldığında yoklama devre dışı bırakılır.
IM018 SQLCompleteAsync , bu tanıtıcıda önceki zaman uyumsuz işlemi tamamlamak için çağrılmadı. Tanıtıcıdaki önceki işlev çağrısı SQL_STILL_EXECUTING döndürüyorsa ve bildirim modu etkinleştirildiyse, son işlemeyi yapmak ve işlemi tamamlamak için tanıtıcıda SQLCompleteAsync çağrılmalıdır.

Comments

SQLProcedures , istenen aralıktaki tüm prosedürleri listeler. Bir kullanıcının bu prosedürlerden herhangi birini gerçekleştirme izni olabilir veya olmayabilir. Erişilebilirliği kontrol etmek için bir uygulama SQLGetInfo'yu çağırıp SQL_ACCESSIBLE_PROCEDURES bilgi değerini kontrol edebilir. Aksi takdirde, uygulamanın kullanıcının çalıştıramayacağı bir prosedürü seçtiği bir durumu yönetebilmelidir. Bu bilgilerin nasıl kullanılabileceği hakkında bilgi için Prosedürler bölümünü inceleyin.

Note

ODBC katalog işlevlerinin genel kullanımı, bağımsız değişkenleri ve döndürülen verileri hakkında daha fazla bilgi için bkz . Katalog İşlevleri.

SQLProcedures sonuçları standart bir sonuç kümesi olarak, PROCEDURE_CAT, PROCEDURE_SCHEMA ve PROCEDURE_NAME ile sıralanmış olarak döndürür.

Note

SQLProcedures tüm prosedürleri döndürmeyebilir. Uygulamalar, SQLProcedures tarafından döndürülse de geri dönmediğine bakılmaksızın herhangi bir geçerli prosedürü kullanabilir.

Aşağıdaki sütunlar ODBC 3*.x* için yeniden adlandırılmıştır. Sütun adı değişiklikleri, uygulamalar sütun numarasına göre bağlandığı için geriye doğru uyumluluğu etkilemez.

ODBC 2.0 sütunu ODBC 3*.x* sütunu
PROCEDURE_QUALIFIER PROSEDÜR_KATEGORİ
PROCEDURE _OWNER PROCEDURE _SCHEM

PROCEDURE_CAT, PROCEDURE_SCHEM ve PROCEDURE_NAME sütunlarının gerçek uzunluklarını belirlemek için bir uygulama, SQL_MAX_CATALOG_NAME_LEN, SQL_MAX_SCHEMA_NAME_LEN ve SQL_MAX_PROCEDURE_NAME_LEN seçenekleriyle SQLGetInfo'yu çağırabilir.

Aşağıdaki tabloda sonuç kümesindeki sütunlar listelenir. 8. sütun (PROCEDURE_TYPE) ötesinde ek sütunlar sürücü tarafından tanımlanabilir. Bir uygulama, açık bir sıralı konum belirtmek yerine sonuç kümesinin sonundan geri sayarak sürücüye özgü sütunlara erişim sağlamalıdır. Daha fazla bilgi için bkz. Katalog İşlevleri Tarafından Döndürülen Veriler.

Sütun adı Sütun numarası Veri türü Comments
PROCEDURE_CAT (ODBC 2.0) 1 Varchar Prosedür kataloğu tanımlayıcısı; Veri kaynağına uygulanmıyorsa NULL. Bir sürücü bazı prosedürler için katalogları desteklerken diğerleri için desteklemiyorsa, örneğin sürücü farklı DBMS'lerden veri aldığında, katalogları olmayan prosedürler için boş bir diziyi ("") döndürür.
PROCEDURE_SCHEM (ODBC 2.0) 2 Varchar Prosedür şeması tanımlayıcısı; Veri kaynağına uygulanmıyorsa NULL. Bir sürücü bazı prosedürler için şemaları desteklerken diğerleri için desteklemiyorsa, örneğin sürücü farklı DBMS'lerden veri aldığında, şemasız prosedürler için boş bir dizi ("") döner.
PROCEDURE_NAME (ODBC 2.0) 3 Varchar NULL değil Prosedür tanımlayıcısı.
NUM_INPUT_PARAMS (ODBC 2.0) 4 N/A Gelecekte kullanım için ayrılmıştır. Uygulamalar, bu sonuç sütunlarında geri dönen verilere güvenmemelidir.
NUM_OUTPUT_PARAMS (ODBC 2.0) 5 N/A Gelecekte kullanım için ayrılmıştır. Uygulamalar, bu sonuç sütunlarında geri dönen verilere güvenmemelidir.
NUM_RESULT_SETS (ODBC 2.0) 6 N/A Gelecekte kullanım için ayrılmıştır. Uygulamalar, bu sonuç sütunlarında geri dönen verilere güvenmemelidir.
KONUŞMALAR (ODBC 2.0) 7 Varchar İşlemin bir tanımı.
PROCEDURE_TYPE (ODBC 2.0) 8 Smallint Prosedür türünü tanımlar:

SQL_PT_UNKNOWN: İşlemin bir değer döndürüp döndürmediği belirlenemez.

SQL_PT_PROCEDURE: Geri dönen nesne bir prosedürdür; yani, iade değeri yoktur.

SQL_PT_FUNCTION: Geri dönen nesne bir fonksiyondur; yani, bir getiri değeri vardır.

SchemaName ve ProcName argümanları arama desenlerini kabul eder. Geçerli arama desenleri hakkında daha fazla bilgi için Pattern Value Argümanları'na bakınız.

Kod Örneği

Prosedür Çağrılarına bakınız.

Hakkında bilgi için Bkz:
Sonuç kümesindeki bir sütuna arabellek bağlama SQLBindCol İşlevi
Deyim işlemeyi iptal etme SQLCancel İşlevi
Tek bir satır veya veri bloğunu sadece ileri yönde almak SQLFetch İşlevi
Veri bloğunu getirme veya sonuç kümesinde kaydırma SQLFetchScroll İşlevi
Bir sürücü veya veri kaynağı hakkında bilgi döndürmek SQLGetInfo Fonksiyonu
Bir prosedürün parametreleri ve sonuç kümesi sütunlarını döndürmek SQLProcedureColumns Fonksiyonu
Depolanmış prosedürleri çağırmak için sözdizimi İfadeleri Yürütme

Ayrıca Bkz.

ODBC API Referansı
ODBC Üst Bilgi Dosyaları