Saya mencoba untuk mendapatkan nilai dari prosedur tersimpan ke dalam variabel SSIS, dan kemudian menguji untuk melihat apakah dua tugas SSIS dapat berfungsi jika saya menambahkan ekspresi. Jadi sebagai contoh, saya mencoba menggunakan prosedur tersimpan ini :
Mungkin saya bahkan mengatur properti variabel SSIS sepenuhnya salah, karena saya juga tidak yakin apakah saya melakukan ini dengan cara yang benar untuk nilai proc yang disimpan untuk diimpor ke variabel SSIS. Tolong beritahu saya jika Anda membutuhkan screencaps apa pun.
Berikut ini contoh tugasnya:
Dan di sini adalah Precreence Constraint Editor screencap:
Dan di sini adalah properti untuk tugas pertama:
Saya ingin maju (atau gagal) berdasarkan kondisi itu. Tetapi ketika saya mengujinya, proses mengalir dari tugas pertama ke kedua terlepas, dan hanya menunjukkan kepada saya "100% selesai" untuk tugas pertama dan tidak ada tentang apakah itu memeriksa ungkapan ini menjadi benar atau tidak. Bagaimana saya bisa melakukan hal seperti itu dan apa yang salah? Saya punya variabel dalam SSIS yang disebut 'orderCount' untuk mendapatkan nilai dari proc yang disimpan.
sumber
@[User::orderCount]
Result Set
halaman. simple-talk.com/sql/ssis/…@[User::orderCount]<5?(dt_bool)1:(dt_bool)0
. Jangan lupa untuk memposting hasil kembali ke utas ini jika berhasil. GL!Jawaban:
Anda memiliki dua pilihan untuk membuat ini berfungsi. Entah Anda dapat menggunakan Set Hasil Tunggal atau Anda dapat menggunakan parameter OUTPUT. Saat ini Anda tidak menggunakan keduanya dengan benar.
Parameter OUTPUT
Prosedur tersimpan Anda didefinisikan memiliki parameter
@OrderCount
dengan arahOUTPUT
Jika Anda ingin menggunakan prosedur tersimpan dalam alat, SSMS, .NET, apa pun, itu akan terlihat seperti
Ini valid untuk menjalankan di atas tanpa menentukan
OUTPUT
tetapi melihat nilai @orderCount. Itu berubah dari 1435 menjadi 0.Hal yang sama berlaku ketika Anda menggunakan Execute SQL Task dalam SSIS. Anda harus menentukan bahwa parameternya adalah OUTPUT dan juga menentukannya di tab Pemetaan parameter.
Tentukan juga variabel yang ingin Anda petakan dan gunakan arah OUTPUT di sana. Di sini saya telah memetakan hasilnya menjadi Variabel SSIS dari tipe Int32 yang disebut
orderCount
Set Hasil Tunggal
Anda memiliki bagian pertama yang benar ini - Anda telah menetapkan bahwa set hasil adalah Baris Tunggal.
Anda akan perhatikan bahwa saya menggunakan
EXECUTE dbo.TestStoredProcSSVariable ?
karena Anda harus menentukan nilai input atau panggilan proc akan terputus (setidaknya seperti yang Anda definisikan). Anda bisa mengkodekan nilai sebagai pengganti?
sejenisnya0
Kemudian, pada tab Set Hasil, di sini saya memetakan kolom pertama (zeroth ordinal) ke Variabel yang dipanggil
orderCountb
Jika Anda menjalankan prosedur tersimpan yang disediakan, Anda tidak akan mendapatkan nilai di orderCountb. Mengapa? Karena Anda tidak mengembalikan apa pun dari panggilan prosedur tersimpan. Saya menambahkan pernyataan terakhir di dalam prosedur tersimpan
Lakukan sendiri
Anda dapat menjelajahi kedua pendekatan menggunakan biml berikut. Apa itu biml? Bahasa Markup Intelijen Bisnis adalah sistem operasi untuk BI. Mengapa Anda peduli tentang hal itu adalah bahwa hal itu akan memungkinkan Anda untuk mengubah beberapa XML menjadi paket SSIS. Yang perlu Anda lakukan adalah mengunduh dan menginstal pembantu BIDS addon gratis
Setelah menginstal BIDS Helper,
Data Source
ke server nyata danProvider
untuk menyelaraskan dengan versi SSIS Anda. Melihat tangkapan layar Anda, ini kemungkinan adalah SQLNCLI10.1Bimlscript.biml
Nikmati paket SSIS berikut
sumber