2009-01-28 25 views
7

Zaten var olan saklı yordamları kullanarak eklenecek olan verileri taşıyorum. Saklanan prosedürler, eklenen satır için bir id parametresine ve bir dönüş değerine (bir seçim ifadesinden) sahiptir. SSIS'de bir OLE DB Komutu içinde, parametre olarak sütun değerlerini geçiren saklı yordamı arayabilir ve genellikle "id" çıktısını işlemek için saklı yordamdaki çıktı parametrelerini kullanırım; Ancak, işlemin id değerini döndürmek için bir seçim kullandığında bunun nasıl döndürülebilir değerlerle ele alınacağından emin değilim. İşte çalıştığı önce kullandığım ne bir örnektir ama seçme döndü değeri almak gerekir:Bir OLE DB Komutu'nda Saklı Yordam'ın SSIS dönüş değeri

exec dbo.uspInsertContactAddress 
@Address = ?, 
@ContactID = ?, 
@DeliveryMethodId = ?, 
@ID = ? output, 
@Version = ? output 

cevap

12

Ben aslında oldukça basit olan bu yapabileceğini bulundu yolu: belki değil mi' da,

exec ? = dbo.StoredProc @param = ?, @param2 = ? 

ve

sonra @RETURN_VALUE Mevcut Hedef Sütunlar cevabını

6

SqlCommand özelliğinde değişken isimleri kullanmayın sadece soru işaretleri ve Çıkış parametreleri için "OUT" veya "OUTPUT" etiketi.

Çıkış parametresi değerini yakalama hilesi, işlem sonucunu yakalamak için bir sütun (SSIS değişkeniyle eşlenen) tanıtmak için OLE DB Komutu'ndan önceki boru hattında türetilmiş bir sütun dönüşümü yapmaktır.

Ekran kapağında bunun nasıl yapılacağına genel bir bakış için OLEDB Command Transformation And Identity Columns'a bakın. Ayrıca, ilk linkte kullanılan Çöp Hedefi için Trash Destination Adapter'a bakın. Bunun gibi şeyleri ayıklamak için kullanabileceğiniz kullanışlı bir araçtır.

+0

Teşekkür görünecektir Soruma tam olarak ne yapmam gerektiğini açıklarım. Yukarıdaki kod çalışmaları kullandım ve eğer prosedür bir çıkış parametresi içeriyorsa değer alabilirim. Sorun şu ki, bu veritabanı için kullanılan prosedürler sadece bir değer almak için bir seçim çağırıyor. – bobwah

+0

Üzgünüm, sorunun ne olduğunu anlayamadığımdan emin değilim. Çıktının sonucunu bir çıkış parametresiyle geçirmemeniz ve bunun yerine proc sonuç kümesini almanın bir yoluna ihtiyacınız var mı? –

0

Her zaman parametre eşlemesini Execute SQL Görevinde çok başarılı bir şekilde kullandım. SQL deyimi "EXEC nameofstoredproc?,? OUTPUT", parametrelerin konumunu belirten soru işaretleri ve parametre bir çıktı ise OUTPUT'tur.

Haritalamadaki parametreleri ilgili değişken adı, yön (giriş, çıkış, Dönüş Değeri) ve veri türüyle belirtin. Kayıtlı proc, istediğiniz sonuç kümesinden bir sonuç kümesi ile döndüğünden, kimliği ve sürümü ReturnValue olarak toplamak için değişkenlerin yönünü belirtin. Senin için iyi çalışmalı. saklı yordam bir resultset dönerse

1

, o zaman bunu yakalamak gerekir:

DECLARE @results TABLE (
    [ID] INT NOT NULL 
) 

INSERT @results ([ID]) 
EXEC dbo.uspInsertContactAddress @Address = ?, @ContactID = ?, @DeliveryMethodId = ?, @ID = ? output, @Version = ? output 

SELECT * FROM @results 

Not: Bir TABLO değişken kullanılır. SQL Server sürümünüze bağlı olarak geçici tablo kullanmanız gerekebilir.

İlgili konular