SORU
21 Mayıs 2010, Cuma


T-SQL saklı yordam Seçilen değeri almak

T-SQL, bu izin verilir:

DECLARE @SelectedValue int
SELECT @SelectedValue = MyIntField FROM MyTable WHERE MyPrimaryKeyField = 1

Bu yüzden, mümkün SEÇİN ve bir şeylerin değerini almak için bir değişken var (skaler, açıkçası sağlanır).

Bir saklı yordam seçin aynı mantık koyarsam:

CREATE PROCEDURE GetMyInt
AS
SELECT MyIntField FROM MyTable WHERE MyPrimaryKeyField = 1

Bu saklı yordam, çıktısını alın ve bir değişkende şeyler yapabilir miyim?

Gibi bir şey

DECLARE @SelectedValue int
SELECT @SelectedValue = EXEC GetMyInt

(Sözdizimi üzerinde çalıştığım için izin verilmez biliyorum!)

CEVAP
21 Mayıs 2010, Cuma


kullanabileceğiniz üç yolu vardır: DÖNÜŞ değeri ve parametre ÇIKTI ve bir sonuç kümesi

AYRICA, eğer desen kullanırsanız dikkat edin: SELECT @Variable=column FROM table ...

eğer birden fazla satır sorgudan döndürülen varsa, @Değişken sadece son satırı sorgu tarafından döndürülen değeri içerir.

DEĞERİ DÖNDÜRÜR
sorgunuza beri döndürür int bir alan, en azından adını ne dayalı. bu hileyi kullanabilirsiniz:

CREATE PROCEDURE GetMyInt
( @Param int)
AS
DECLARE @ReturnValue int

SELECT @ReturnValue=MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN @ReturnValue
GO

ve şimdi prosedür gibi çağrı:

DECLARE @SelectedValue int
       ,@Param         int
SET @Param=1
EXEC @SelectedValue = GetMyInt @Param
PRINT @SelectedValue

bu sadece DÖNÜŞ tek int bir değer döndürür, çünkü değer vermez çalışır, ve boşluk sıfır dönüştürülür.

ÇIKIŞ PARAMETRESİ
bir çıkış parametresi kullanabilirsiniz:

CREATE PROCEDURE GetMyInt
( @Param     int
 ,@OutValue  int OUTPUT)
AS
SELECT @OutValue=MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN 0
GO

ve şimdi prosedür gibi çağrı:

DECLARE @SelectedValue int
       ,@Param         int
SET @Param=1
EXEC GetMyInt @Param, @SelectedValue OUTPUT
PRINT @SelectedValue 

Çıkış parametreleri tek bir değer döndürebilir, ama herhangi bir veri türü olabilir

SONUÇ KÜMESİ sonuç için set yordam gibi yapın:

CREATE PROCEDURE GetMyInt
( @Param     int)
AS
SELECT MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN 0
GO

bu gibi kullanın:

DECLARE @ResultSet table (SelectedValue int)
DECLARE @Param int
SET @Param=1
INSERT INTO @ResultSet (SelectedValue)
    EXEC GetMyInt @Param
SELECT * FROM @ResultSet 

sonuç kümeleri kaç satır ve herhangi bir veri türü pek çok sütun bulunabilir

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DrePwn

    DrePwn

    22 Temmuz 2011
  • Numberphile

    Numberphile

    15 EYLÜL 2011
  • UsherVEVO

    UsherVEVO

    15 EKİM 2009