Udostępnij przez


Parametry instrukcji

Parametr jest zmienną w instrukcji SQL. Załóżmy na przykład, że tabela Parts zawiera kolumny o nazwach PartID, Description i Price. Aby dodać część bez parametrów, wymagałoby skonstruowania instrukcji SQL, takiej jak:

INSERT INTO Parts (PartID, Description, Price) VALUES (2100, 'Drive shaft', 50.00)  

Mimo że ta instrukcja wstawia nowe zamówienie, nie jest to dobre rozwiązanie dla aplikacji do wprowadzania zamówień, ponieważ wartości do wstawiania nie mogą być zaprogramowane na stałe w aplikacji. Alternatywą jest skonstruowanie instrukcji SQL w czasie wykonywania przy użyciu wartości do wstawienia. To również nie jest dobre rozwiązanie ze względu na złożoność konstruowania wyrażeń w czasie wykonywania. Najlepszym rozwiązaniem jest zastąpienie elementów klauzuli VALUES znakami zapytania (?) lub znacznikami parametrów:

INSERT INTO Parts (PartID, Description, Price) VALUES (?, ?, ?)  

Znaczniki parametrów są następnie powiązane ze zmiennymi aplikacji. Aby dodać nowy wiersz, aplikacja musi ustawić tylko wartości zmiennych i wykonać instrukcję . Następnie sterownik pobiera bieżące wartości zmiennych i wysyła je do źródła danych. Jeśli instrukcja zostanie wykonana wiele razy, aplikacja może zwiększyć wydajność procesu, przygotowując instrukcję.

Pokazana instrukcja może być zakodowana w aplikacji wprowadzania zamówień w celu wstawienia nowego wiersza. Jednak znaczniki parametrów nie są ograniczone do aplikacji pionowych. W przypadku każdej aplikacji ułatwiają one konstruowanie instrukcji SQL w czasie wykonywania, unikając konieczności konwersji na i z tekstu. Na przykład pokazany właśnie identyfikator części jest najprawdopodobniej przechowywany w aplikacji jako liczba całkowita. Jeśli instrukcja SQL jest konstruowana bez znaczników parametrów, aplikacja musi przekonwertować identyfikator części na tekst, a źródło danych musi przekonwertować go z powrotem na liczbę całkowitą. Za pomocą znacznika parametru aplikacja może wysłać identyfikator części do sterownika jako liczbę całkowitą, która zwykle może wysłać go do źródła danych jako liczbę całkowitą. Oszczędza to dwie konwersje. W przypadku długich wartości danych jest to bardzo ważne, ponieważ formularze tekstowe takich wartości często przekraczają dozwoloną długość instrukcji SQL.

Parametry są prawidłowe tylko w niektórych miejscach w instrukcjach SQL. Na przykład nie są one dozwolone na liście wyboru (lista kolumn, które mają być zwracane przez instrukcję SELECT ), ani nie są dozwolone jako oba operandy operatora binarnego, takiego jak znak równości (=), ponieważ nie można określić typu parametru. Ogólnie rzecz biorąc, parametry są prawidłowe tylko w instrukcjach Języka manipulowania danymi (DML), a nie w instrukcjach Języka definicji danych (DDL). Aby uzyskać więcej informacji, zobacz Znaczniki parametrów w dodatku C: Gramatyka SQL.

Gdy instrukcja SQL wywołuje procedurę, można użyć nazwanych parametrów. Nazwane parametry są identyfikowane przez ich nazwy, a nie przez ich pozycję w instrukcji SQL. Można je powiązać za pomocą wywołania metody SQLBindParameter, ale parametr jest identyfikowany przez pole SQL_DESC_NAME identyfikatora IPD (deskryptor parametru implementacji), a nie przez argument ParameterNumbersqlBindParameter. Można je również powiązać, wywołując element SQLSetDescField lub SQLSetDescRec. Aby uzyskać więcej informacji na temat nazwanych parametrów, zobacz Wiązanie parametrów według nazwy (nazwanych parametrów), w dalszej części tej sekcji. Aby uzyskać więcej informacji na temat deskryptorów, zobacz Deskryptory.

Ta sekcja zawiera następujące tematy.