Udostępnij za pośrednictwem


SQLPrepare

The SQL Server Native klient ODBC driver creates a procedura przechowywana tymczasowo from prepared SQL statements. procedura przechowywana są wydajny sposób wykonywania instrukcja wiele razy, ale Tworzenie procedura przechowywana jest droższe niż wykonać prostej instrukcja.Ogólną zasadą warto rozważyć użycie SQLPrepare and SQLExecute aplikacja będzie przesłać instrukcję SQL więcej niż trzy razy.

Uwaga

SQL Server obsługuje modelu przygotowanie/wykonać z ODBC.Tej dyskusji SQLPrepare/SQLExecute zachowanie ma zastosowanie tylko do wersji SQL Server starsze niż 7.0.

A procedura przechowywana tymczasowo utworzone przez SQLPrepare is named **odbc # #**useridentifier , gdzie useridentifier jest do sześciu znaków do ośmiu cyfr określających sposób połączenie nazwy użytkownika.

SQLPrepare tworzy procedura przechowywana tymczasowo wszystkich wartości parametru zostały już powiązane lub instrukcja języka SQL nie zawiera parametry.SQLExecute tworzy procedurę, jeśli wszystkie parametry nie zostały powiązane, kiedy SQLPrepare została wywołana.

SQLPrepare można utworzyć bardziej efektywne niż procedur przechowywanychSQLExecute, a firma Microsoft zaleca się używanie SQLBindParameter powiązać zmiennych parametrów przed wywołaniem SQLPrepare.

If the CREATE PROCEDURE statement used to generate a temporary stored procedure returns an error, SQLPrepare or SQLExecute submits the statement to SQL Server with the SET NOEXEC or SET PARSEONLY option enabled (depending on the statement type).SQL Server checks the syntax of the statement and returns any errors.

SQLExecute może zwracać żadnych SQLSTATE ODBC i wszelkie SQL Server błąd, który może zostać obliczona przez SQLPrepare.

The SQL Server Native klient ODBC driver creates a new procedura przechowywana tymczasowo if the InputOutputType, ParameterType, ColumnSize, or DecimalDigits values are altered in calls to SQLBindParameter on a prepared instrukcja.Nie zostanie utworzony nowy tymczasową procedura przechowywana, parametry związane są wskazywany nowy buforów pamięci klient, długość pamięci klient zostanie zmieniony lub wskaźnika do długości lub wskaźnik wartość dla parametru zostanie zmieniona.

Jeśli połączenie nie może utworzyć procedura przechowywana dla jakiegoś powodu (na przykład braku uprawnień), SQL Server Macierzysty sterownik ODBC klient nie używa procedura przechowywana, ale zamiast tego, przesyła instrukcję SQL za każdym razem SQLExecute nosi nazwę.

Domyślnie SQL Server Macierzysty sterownik ODBC klient spadnie tymczasowe procedury przechowywane, gdy połączenie jest przerwane)SQLDisconnect nosi nazwę dla połączenia).Może to stwarzać problemy, jeśli połączenie powinien pozostawać otwarte przez nieokreślony czas.To zachowanie domyślne można zmienić za pomocą opcji specyficznych dla sterownika połączenia SQL_USE_PROCEDURE_FOR_PREPARE.

Uwaga

Jeśli wykonał zestaw NOCOUNT ON wielokrotne instrukcje osadzonych w procedura przechowywana nie należy tworzyć wiele zestawów wyników, jak powinny.Liczenie wierszy generowane przez instrukcji SQL w procedurze przechowywanej są ignorowane przez sterownik.