SQLNumParams, funkcja

Zgodność
Wersja wprowadzona: Zgodność ze standardami ODBC 1.0: ISO 92

Podsumowanie
SQLNumParams zwraca liczbę parametrów w instrukcji SQL.

Syntax

  
SQLRETURN SQLNumParams(  
     SQLHSTMT        StatementHandle,  
     SQLSMALLINT *   ParameterCountPtr);  

Arguments

StatementHandle
[Dane wejściowe] Uchwyt instrukcji.

ParameterCountPtr
[Wyjście] Wskaźnik do bufora, w którym zwraca liczbę parametrów w instrukcji.

Zwroty

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR lub SQL_INVALID_HANDLE.

Diagnostyka

Gdy SQLNumParams zwraca SQL_ERROR lub SQL_SUCCESS_WITH_INFO, można uzyskać powiązaną wartość SQLSTATE, wywołując SQLGetDiagRec z HandleType SQL_HANDLE_STMT oraz Handle of StatementHandle. Poniższa tabela przedstawia wartości SQLSTATE najczęściej zwracane przez SQLNumParams i wyjaśnia każdą z nich w kontekście tej funkcji; notacja "(DM)" poprzedza opisy stanów SQL zwracanych przez Menedżera Sterowników. Kod zwracany skojarzony z każdą wartością SQLSTATE jest SQL_ERROR, chyba że określono inaczej.

SQLSTATE Error Opis
01000 Ostrzeżenie ogólne Komunikat informacyjny specyficzny dla sterownika. (Funkcja zwraca SQL_SUCCESS_WITH_INFO).
08S01 Błąd połączenia komunikacyjnego Połączenie komunikacyjne między sterownikiem a źródłem danych, z którym sterownik został połączony, nie powiodło się przed zakończeniem przetwarzania funkcji.
HY000 Błąd ogólny Wystąpił błąd, dla którego nie było określonego stanu SQLSTATE i dla którego nie zdefiniowano parametru SQLSTATE specyficznego dla implementacji. Komunikat o błędzie zwrócony przez element SQLGetDiagRec w buforze *MessageText opisuje błąd i jego przyczynę.
HY001 Błąd alokacji pamięci Sterownik nie może przydzielić pamięci wymaganej do obsługi wykonywania lub ukończenia funkcji.
HY008 Operacja anulowana Przetwarzanie asynchroniczne zostało włączone dla instrukcji StatementHandle. Funkcja SQLNumParams została wywołana i przed jej zakończeniem wykonania wywołano SQLCancel lub SQLCancelHandle na StatementHandle; funkcja SQLNumParams była następnie ponownie wywoływana na CommandHandle.

Albo funkcja SQLNumParams była wywoływana i przed jej zakończeniem wykonania SQLCancel lub SQLCancelHandle była wywoływana na StatementHandle z innego wątku w aplikacji wielowątkowej.
HY010 Błąd sekwencji funkcji (DM) Funkcja była wywoływana przed wywołaniem SQLPrepare lub SQLExecDirect dla CommandHandle.

(DM) Asynchronicznie wykonywana funkcja została wywołana dla dojścia połączenia skojarzonego z instrukcją StatementHandle. Ta asynchroniczna funkcja działała nadal, gdy wywoływano funkcję SQLNumParams .

(DM) Asynchronicznie wykonująca funkcję (a nie tę) została wywołana dla instrukcji StatementHandle i nadal była wykonywana, gdy ta funkcja została wywołana.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations lub SQLSetPos został wywołany dla instrukcjiHandle i zwrócił SQL_NEED_DATA. Ta funkcja została wywołana przed wysłaniem danych dla wszystkich parametrów wykonywania danych lub kolumn.
HY013 Błąd zarządzania pamięcią Nie można przetworzyć wywołania funkcji, ponieważ nie można uzyskać dostępu do bazowych obiektów pamięci, prawdopodobnie z powodu niskich warunków pamięci.
HY117 Połączenie jest zawieszone z powodu nieznanego stanu transakcji. Dozwolone są tylko funkcje rozłączania i tylko do odczytu. (DM) Więcej informacji o stanie zawieszenia można znaleźć w sekcji SQLEndTran Function.
HYT01 Upłynął limit czasu połączenia Okres przekroczenia limitu czasu połączenia wygasł, zanim źródło danych odpowiedziało na żądanie. Limit czasu połączenia jest ustawiany za pomocą parametru SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Sterownik nie obsługuje tej funkcji (DM) Sterownik skojarzony z instrukcją StatementHandle nie obsługuje funkcji.
IM017 Sondowanie jest wyłączone w trybie powiadomień asynchronicznych Za każdym razem, gdy jest używany model powiadomień, sondowanie jest wyłączone.
IM018 Funkcja SQLCompleteAsync nie została wywołana w celu ukończenia poprzedniej operacji asynchronicznej na tym dojściu. Jeśli poprzednie wywołanie funkcji na dojściu zwraca SQL_STILL_EXECUTING i jeśli tryb powiadomień jest włączony, narzędzie SQLCompleteAsync musi być wywoływane na dojściu, aby wykonać przetwarzanie końcowe i zakończyć operację.

Comments

SQLNumParams można wywołać dopiero po wywołaniu SQLPrepare .

Jeśli instrukcja powiązana z StatementHandle nie zawiera parametrów, SQLNumParams ustawia *ParameterCountPtr na 0.

Liczba parametrów zwracanych przez SQLNumParams jest taka sama jak pole SQL_DESC_COUNT w IPD.

Więcej informacji można znaleźć w sekcji Opis parametrów.

Aby uzyskać informacje o Zobacz
Powiązanie bufora z parametrem Funkcja SQLBindParameter
Zwracanie informacji o parametrze w instrukcji Funkcja SQLDescribeParam