Praca z parametrów i zwracanych kodów w wykonywanie zadań SQL
Instrukcji SQL i procedury przechowywane często używają input Parametry, output , parametrów i zwracanych kodów.W Integration Services, obsługuje zadanie wykonanie instrukcji SQL Input, Output, i ReturnValue typy parametrów.Możesz użyć Input typu parametrów wejściowych, Output dla parametrów wyjściowych i ReturnValue dla zwracają kodów.
Ostrzeżenie
Parametry zadania wykonanie instrukcji SQL można używać tylko wtedy, gdy dostawca danych je obsługuje.
Parametry poleceń SQL, w tym kwerendy i procedury przechowywane są mapowane na zmienne zdefiniowane przez użytkownika utworzone w ramach zakres zadanie wykonanie instrukcji SQL kontener nadrzędnego lub w zakres pakiet.Projekt zestaw wartości zmiennych czas lub wypełniane dynamicznie przy uruchomieniu czas.Parametry można również mapować do zmiennych systemowych.Aby uzyskać więcej informacji, zobacz Integracja usług zmiennych i Zmienne systemowe.
Praca z parametrów i zwracanych kodów w wykonanie instrukcji SQL zadania jest jednak więcej niż obsługuje wystarczy znajomość parametr, jakie typy zadania i jak mapowane tych parametrów.Istnieją dodatkowe obciążenie wymagania i wskazówki pomyślnie parametrów i zwracają kodów w zadanie wykonanie instrukcji SQL.Pozostała w tym temacie omówiono te wymagania dotyczące użycia i wytyczne:
Za pomocą nazw parametrów i znaczniki
Przy użyciu parametrów z datą i czas typów danych
Używanie parametrów w klauzulach WHERE
Procedury przechowywane przy użyciu parametrów
Pobieranie wartości zwracanych kodów
Konfigurowanie parametrów i zwracanych kodów w wykonywanie zadań edytora języka SQL
Za pomocą parametru nazwy i znaczniki
W zależności od typu połączenia, który używa zadanie wykonanie instrukcji SQL Składnia polecenia SQL używa innego parametru.Na przykład ADO.NET typu Menedżer połączeń wymaga polecenia SQL korzysta z znacznik parametru w formacie @ varParameter, typ połączenia OLE DB wymaga znacznik parametru znak zapytania (?).
Nazwy, których można użyć jako nazwy parametrów mapowania między zmiennych i parametrów różnią się także przez typ menedżer połączeń.Na przykład ADO.NET Typ menedżer połączeń jest używana nazwa użytkownika z @ prefiks, typ Menedżera połączenia OLE DB wymaga używania liczbą porządkową opartych na 0 jako nazwę parametru.
Poniższa tabela zawiera wymagania dla polecenia SQL dla typów menedżer połączeń, można użyć zadania wykonanie instrukcji SQL.
Typ połączenia |
Znacznik parametru |
Nazwa parametru |
Przykład polecenia SQL |
---|---|---|---|
ADO |
? |
Parametr1, parametr2 … |
SELECT Person.Person FROM tytuł FirstName, LastName, gdzie BusinessEntityID =? |
ADO.NET |
@<Nazwa parametru> |
@<Nazwa parametru> |
SELECT FirstName, LastName, tytuł Z Person.Person gdzie BusinessEntityID = @ parmBusinessEntityID |
ODBC |
? |
1, 2, 3, … |
SELECT Person.Person FROM tytuł FirstName, LastName, gdzie BusinessEntityID =? |
Program EXCEL i OLE DB |
? |
0, 1, 2, 3, … |
SELECT Person.Person FROM tytuł FirstName, LastName, gdzie BusinessEntityID =? |
Przy użyciu parametrów z ADO.NET i menedżerowie połączenia ADO
ADO.NET i menedżerowie połączenia ADO mają szczególne wymagania dotyczące poleceń SQL, które używają parametrów:
ADO.NET Menedżerowie połączenia wymagają, że polecenia SQL użyć nazwy parametrów jako parametru.Oznacza to, że zmienne mogą być mapowane bezpośrednio do parametrów.Na przykład zmienna @varName jest mapowany na parametr o nazwie @parName i udostępnia wartość parametru @parName.
Menedżerowie połączenia ADO wymagają, że znaki zapytania (?) za pomocą polecenia SQL jako parametru.Można jednak użyć dowolną nazwę użytkownika, z wyjątkiem dla wartości całkowitych jako nazw parametrów.
Aby podać wartości parametrów, zmienne są mapowane do nazwy parametrów.Następnie zadanie wykonanie instrukcji SQL używa wartości porządkowej parametr Nazwa listy parametrów załadować wartości z zmiennych parametrów.
Korzystanie z programu EXCEL, ODBC i OLE DB połączenia menedżerów parametrów
Menedżerowie połączenia programu EXCEL i ODBC, OLE DB wymagają, aby polecenie SQL używały znaki zapytania (?) jako parametru i wartości liczbowe 0 lub 1 jako nazw parametrów.Jeśli zadanie wykonanie instrukcji SQL używa menedżer połączeń ODBC, nazwy parametru, który mapuje pierwszego parametru kwerendy o nazwie 1; w przeciwnym razie parametr o nazwie 0.Dla kolejnych parametrów wartość numeryczna nazwa parametru wskazuje parametr w poleceniu SQL, który mapuje nazwy parametru.Na przykład parametr o nazwie 3 mapy trzeci parametr jest reprezentowany przez trzeci znak zapytania (?) w polecenia SQL.
Aby podać wartości parametrów, zmienne są mapowane do nazwy parametrów i zadanie wykonanie instrukcji SQL używa wartości porządkowej nazwę parametru załadować wartości z zmiennych parametrów.
W zależności od dostawca, który używa menedżer połączeń niektóre typy danych OLE DB mogą nie być obsługiwane.Na przykład sterownik program Excel rozpoznaje tylko ograniczony zestaw typów danych.Aby uzyskać więcej informacji o zachowaniu dostawca Jet przy użyciu sterownika programu Excel, zobacz Źródła programu Excel.
Przy użyciu parametrów z menedżerami połączenie DB OLE
Gdy zadanie wykonanie instrukcji SQL używa menedżer połączeń OLE DB, BypassPrepare Właściwość zadania jest dostępna.Należy zestaw tej właściwości, aby true Jeśli zadanie wykonanie instrukcji SQL używa instrukcji SQL z parametrów.
Korzystając z menedżer połączeń OLE DB, nie można użyć podkwerendy sparametryzowana, ponieważ wykonywanie zadań SQL nie może pochodzić parametr informacji za pośrednictwem dostawca OLE DB.Jednak użyć wyrażenie, aby połączyć wartości parametru ciąg kwerendy i do zestaw SqlStatementSource właściwości zadania.
Używanie parametrów w Data i godzina typów danych
Przy użyciu daty i czasu Parametry ADO.NET i menedżerowie połączenia ADO
Podczas odczytywania danych z SQL Server typów, time i datetimeoffset, zadanie wykonanie instrukcji SQL, który używa albo ADO.NET lub ADO, Menedżer połączeń ma następujące dodatkowe wymagania:
Dla time danych, ADO.NET Menedżer połączeń wymaga dane przechowywane w parametrze, którego typ parametru jest Input lub Output, której typem danych jest string.
Dla datetimeoffset danych, ADO.NET Menedżer połączeń wymaga te dane mają być przechowywane w jednym z następujących parametrów:
Parametr, którego typ parametru jest Input i której typem danych jest string.
Parametr, którego typ parametru jest Output lub ReturnValue, której typem danych jest datetimeoffset, string, lub datetime2.W przypadku wybrania parametru, której typem danych jest albo string lub datetime2, Integration Services konwertuje dane ciąg lub datetime2.
ADO Menedżer połączeń wymaga albo time lub datetimeoffset dane przechowywane w parametrze, którego typ parametru jest Input lub Output, której typem danych jest adVarWchar.
Więcej informacji o SQL Server typów danych i sposób mapowania do Integration Services typów danych, zobacz Typy danych (Transact-SQL) i Typy danych usług integracji.
Data i godzina parametrów przy użyciu OLE DB połączenia menedżerów
Korzystając z menedżer połączeń OLE DB, zadanie wykonanie instrukcji SQL ma wymagania dotyczące określonego magazynu danych z SQL Server typy danych, date, time, datetime, datetime2, i datetimeoffset.Dane te muszą być przechowywane w jednym z następujących typów parametru:
Parametr wejściowy NVARCHAR typu danych.
Parametru wyjściowego z odpowiedni typ danych, jak wymieniono w poniższej tabela.
Output Typ parametru
Typ danych Data
DBDATE
date
DBTIME2
time
ODCISK CZASOWY
datetime, datetime2
DBTIMESTAMPOFFSET
datetimeoffset
Jeśli dane nie są przechowywane w odpowiednich danych wejściowych lub parametr wyjściowy, pakiet nie powiedzie się.
Data i godzina parametrów przy użyciu menedżerów połączenia ODBC
Podczas korzystania z menedżer połączeń ODBC zadanie wykonanie instrukcji SQL ma wymagania dotyczące określonego magazynu danych z jednym z SQL Server typy danych, date, time, datetime, datetime2, lub datetimeoffset.Dane te muszą być przechowywane w jednym z następujących typów parametru:
input Parametr typu danych SQL_WVARCHAR
output Wpisz parametr odpowiednimi danymi, jak wymieniono w poniższej tabela.
Output Typ parametru
Typ danych Data
SQL_DATE
date
SQL_SS_TIME2
time
SQL_TYPE_TIMESTAMP
- lub -
SQL_TIMESTAMP
datetime, datetime2
SQL_SS_TIMESTAMPOFFSET
datetimeoffset
Jeśli dane nie są przechowywane w odpowiednich danych wejściowych lub parametr wyjściowy, pakiet nie powiedzie się.
W przypadku gdy przy użyciu parametrów klauzul
SELECT, INSERT, UPDATE i DELETE poleceń często zawierają klauzule WHERE do określ filtry, które określają warunki, każdy wiersz w źródło muszą spełniać tabele, aby kwalifikować się do polecenia SQL.Parametry zawierają wartości filtru w klauzulach WHERE.
Za pomocą parametru dynamicznie dotyczące wartości parametru.Reguły, które parametru znaczniki oraz nazwy parametrów mogą być używane w instrukcja języka SQL zależą od typu menedżer połączeń, który używa wykonanie instrukcja języka SQL.
Następujące tabela podano przykłady polecenia wyboru według typu menedżer połączeń.Instrukcje INSERT, UPDATE i DELETE są podobne.Przykłady umożliwia wybór powrót produktów z Product tabela w AdventureWorks2008R2 o ProductID większy i mniejszy niż wartości określone przez dwa parametry.
Typ połączenia |
Wybierz składni |
---|---|
Program EXCEL i ODBC, OLEDB |
SELECT* FROM Production.Product WHERE ProductId > ? AND ProductID < ? |
ADO |
SELECT* FROM Production.Product WHERE ProductId > ? AND ProductID < ? |
ADO.NET |
SELECT* FROM Production.Product WHERE ProductId > @parmMinProductID AND ProductID < @parmMaxProductID |
Przykłady wymaga parametrów, które mają następujące nazwy:
Menedżerowie połączenia programu EXCEL i OLED DB użyć nazwy parametrów 0 i 1.Typ połączenia ODBC używa 1 i 2.
Typ połączenia ADO można użyć dowolnego dwie nazwy parametru, takie jak parametr1, parametr2, ale musi być mapowana parametrów ich pozycja porządkowa liście parametrów.
ADO.NET Typ połączenia używa nazwy parametrów @ parmMinProductID i @ parmMaxProductID.
Procedury przechowywane przy użyciu parametrów
Polecenia SQL, które uruchamiają procedur przechowywanych, można również użyć parametru mapowania.Zasady dotyczące używania parametru znaczniki oraz nazwy parametrów zależy od typu menedżer połączeń, który używa wykonanie instrukcji SQL, podobnie jak zasady kwerend parametrycznych.
Następujące tabela podano przykłady polecenia EXEC przez typ menedżer połączeń.Przykłady Uruchom uspGetBillOfMaterials procedura składowana w AdventureWorks2008R2.The stored procedure uses the @StartProductID and @CheckDate input parameters.
Typ połączenia |
Składnia EXEC |
---|---|
Program EXCEL i OLEDB |
EXEC uspGetBillOfMaterials ?, ? |
ODBC |
{call uspGetBillOfMaterials(?, ?)} Aby uzyskać więcej informacji na temat składni połączenie ODBC, zobacz temat Parametry procedury, w ODBC Programmer's Reference w bibliotece MSDN. |
ADO |
If IsQueryStoredProcedure is zestaw to False, EXEC uspGetBillOfMaterials ?, ? If IsQueryStoredProcedure is zestaw to True, uspGetBillOfMaterials |
ADO.NET |
If IsQueryStoredProcedure is zestaw to False, EXEC uspGetBillOfMaterials @StartProductID, @CheckDate If IsQueryStoredProcedure is zestaw to True, uspGetBillOfMaterials |
Aby użyć parametrów wyjściowych, składnia wymaga od słowa kluczowego wyjścia każdy znacznik parametru.Na przykład następująca składnia parametru wyjściowego jest poprawna: EXEC myStoredProcedure ? OUTPUT.
Aby uzyskać więcej informacji o używaniu parametry wejściowe i wyjściowe z języka Transact-SQL procedur przechowywanych, zobacz Parametry (aparat bazy danych), Zwracanie danych przy użyciu parametrów wyjściowych, i EXECUTE (Transact-SQL).
Pobieranie wartości zwracanych kodów
procedura składowana można zwrócić wartość całkowitą, nazywane kod zwrotny, aby wskazać stan wykonania procedury.Aby zaimplementować kody powrotne w zadanie wykonanie instrukcji SQL, używać parametrów ReturnValue typu.
Następujące tabela list przez połączenia wpisz przykłady poleceń EXEC, które implementują kody zwrotne.We wszystkich przykładach użyto input parametru.Zasady dotyczące używania parametru znaczniki oraz nazwy parametrów są takie same dla wszystkich typów parametrów —Input, Output, i ReturnValue.
Niektóre składni nie obsługuje parametru literałów.W takim przypadek należy podać wartość parametru za pomocą zmiennej.
Typ połączenia |
Składnia EXEC |
---|---|
Program EXCEL i OLEDB |
EXEC ? = myStoredProcedure 1 |
ODBC |
{? = call myStoredProcedure(1)} Aby uzyskać więcej informacji na temat składni połączenie ODBC, zobacz temat Parametry procedury, w ODBC Programmer's Reference w bibliotece MSDN. |
ADO |
If IsQueryStoreProcedure is zestaw to False, EXEC ? = myStoredProcedure 1 If IsQueryStoreProcedure is zestaw to True, myStoredProcedure |
ADO.NET |
zestaw IsQueryStoreProcedure is zestaw to True. myStoredProcedure |
W składni przedstawionej w poprzedniej tabela zadanie wykonanie instrukcji SQL używa Wprowadzania bezpośredniego typu, aby uruchomić procedura składowana źródło.Można także użyć zadania wykonanie instrukcji SQL Połączenie z plikiem typu, aby uruchomić procedura składowana źródło.Regardlesss czy korzysta zadania Excecute SQL Wprowadzania bezpośredniego lub Pliku połączenia typu źródło, należy użyć parametru ReturnValue Typ, aby zaimplementować kod zwrotny.Aby uzyskać więcej informacji na temat konfigurowania typ źródło w instrukcja języka SQL, który uruchamia zadanie wykonanie instrukcja języka SQL, zobacz Uruchomić Edytor zadań SQL (strona Ogólne).
Aby uzyskać więcej informacji o używaniu kody powrotne z języka Transact-SQL procedur przechowywanych, zobacz Zwracanie danych przy użyciu kod zwrotny i ZWROT (Transact-SQL).
Konfigurowanie parametrów i zwracanych kodów w wykonywanie zadań SQL
Więcej informacji na temat właściwości parametry i powrotu kodami, który zestaw w SSIS Projektant, kliknij następujący temat:
Aby uzyskać więcej informacji dotyczących sposobu zestaw tych właściwości w SSIS Projektant, kliknij następujący temat:
Zasoby zewnętrzne
Wpis w blogu, procedur przechowywanych o parametry wyjściowe, na blogs.msdn.com
Próbki witrynie CodePlex wykonanie parametry SQL i zestawy wyników, na msftisprodsamples.codeplex.com
|