Próbuję przekształcić wartość z procedury składowanej w zmienną SSIS, a następnie testuję, czy dwa zadania SSIS mogą działać, jeśli dodam wyrażenie. Na przykład próbuję użyć tej procedury składowanej:
Może nawet źle konfiguruję właściwości zmiennej SSIS, ponieważ nie jestem również pewien, czy robię to we właściwy sposób, aby zaimportowana wartość proc została zaimportowana do zmiennej SSIS. Proszę, powiedz mi, jeśli potrzebujesz więcej zrzutów ekranowych czegokolwiek innego.
Oto przykład zadania:
A oto zrzut ekranu edytora ograniczeń Priorytetu:
A oto właściwości pierwszego zadania:
Chcę, aby postępował (lub nie powiódł się) w oparciu o ten warunek. Ale kiedy go testuję, proces przechodzi niezależnie od pierwszego zadania do drugiego i pokazuje mi tylko „100% ukończenia” dla pierwszego zadania i nic o tym, czy sprawdził, czy to wyrażenie jest prawdziwe, czy nie. Jak mogę to zrobić i co się dzieje? Mam zmienną w SSIS o nazwie „orderCount”, aby uzyskać wartość z przechowywanego proc.
źródło
@[User::orderCount]
Result Set
stronie. simple-talk.com/sql/ssis/…@[User::orderCount]<5?(dt_bool)1:(dt_bool)0
. Nie zapomnij opublikować wyników z powrotem w tym wątku, jeśli się powiedzie. GL!Odpowiedzi:
Masz dwie możliwości, aby to zadziałało. Możesz użyć pojedynczego zestawu wyników lub parametru WYJŚCIE. Obecnie nie używasz poprawnie.
Parametr WYJŚCIE
Procedura składowana jest zdefiniowana jako posiadająca parametr
@OrderCount
z kierunkiemOUTPUT
Gdybyś chciał skorzystać z procedury przechowywanej w narzędziu, SSMS, .NET, cokolwiek, wyglądałoby to mniej więcej tak
Prawidłowe jest uruchomienie powyższego bez określania,
OUTPUT
ale spójrz na wartość @orderCount. Zmienia się z 1435 na 0.To samo dotyczy sytuacji, gdy korzystasz z polecenia Wykonaj SQL w SSIS. Musisz określić, że parametr jest ustawiony na WYJŚCIE, a także określić go na karcie Odwzorowania parametrów.
Określ również zmienną, którą chcesz zmapować i użyj tam parametru WYJŚCIE. Tutaj zamapowałem wynik na Zmienną SSIS typu Int32 o nazwie
orderCount
Zestaw jednego wyniku
Masz pierwszą część tej poprawki - określiłeś, że zestaw wyników to Pojedynczy wiersz.
Zauważysz, że używam,
EXECUTE dbo.TestStoredProcSSVariable ?
ponieważ musisz podać wartość wejściową, w przeciwnym razie wywołanie proc zostanie przerwane (przynajmniej tak, jak to zdefiniowałeś). Mógłbyś na stałe zakodować wartość zamiast?
podobnego0
Następnie, na zakładce Zestaw wyników, tutaj mapuję pierwszą kolumnę (zero porządkowa) na zmienną o nazwie
orderCountb
Jeśli uruchomisz podaną procedurę składowaną, nie otrzymasz wartości w orderCountb. Dlaczego? Ponieważ nic nie zwracasz z wywołania procedury składowanej. Dodałem końcowe oświadczenie wewnątrz procedury przechowywanej
Zrób to sam
Możesz zbadać dowolne podejście, używając następującego bimla. Co to jest biml? Business Intelligence Markup Language to system operacyjny dla BI. Dlatego zależy Ci na tym, że pozwoli ci to przekształcić trochę XML w pakiet SSIS. Wszystko, co musisz zrobić, to pobrać i zainstalować bezpłatny dodatek BIDS Helper
Po zainstalowaniu BIDS Helper,
Data Source
serwerProvider
do prawdziwego i wyrównaj z wersją SSIS. Patrząc na zrzut ekranu, prawdopodobnie będzie to SQLNCLI10.1Bimlscript.biml
Korzystaj z następującego pakietu SSIS
źródło