2

あなたのメッセージをありがとう、私はこのように私の問題を解決しました

ALTER FUNCTION [VEZNE].[fnMakbuzIslemGetir] 
        ( 
              @refNo     as int      
        ) 

RETURNS @tablename TABLE (kontrol1 char(1),key0 numeric(18,0) ,tarih datetime ,hizkod char(12),hizad char(75),ytlhizfiyat decimal(18,2) ,hizmiktar numeric(18,2),ytlhiztutar decimal(18,2))
        AS 
        BEGIN

            DECLARE @durum     AS VARCHAR
            DECLARE @hastaTuru AS VARCHAR 
            DECLARE @makTipi   AS VARCHAR 

            SET @durum     = (SELECT durum FROM TH_RefKart WHERE RefNo = @refNo)
            SET @hastaturu = (SELECT HastaTuru FROM TH_Dosya WHERE DosyaNo in (SELECT DosyaNo FROM TH_RefKart WHERE RefNo = @refNo))
            SET @makTipi   = (SELECT maktipi FROM TH_Islem WHERE refNo = @refNo )

            IF ((@hastaTuru = 'Ücretli') AND (@durum = 'AYAKTA')) OR @makTipi = '0' 
            BEGIN 
                INSERT @tablename SELECT kontrol1, key0, tarih, hizkod, hizad, ytlhizfiyat, hizmiktar, ytlhiztutar 
                FROM TH_Islem 
                WHERE refno= @refNo and DekontNo = '0' and anahtar<> -1 
            END 

        RETURN

        END

しかし今、私はこの行で別の問題を抱えています

SET @makTipi   = (SELECT maktipi FROM TH_Islem WHERE refNo = @refNo)

この SELECT は複数行の値を返すためです。私は今何ができますか?

4

2 に答える 2

1

さて、 (SELECT maktipi FROM TH_Islem WHERE refNo = @refNo ) は複数の値を返します。今何をすべきかは、何をしたいかによって異なります。したがって、これらの結果から最大値が必要な場合は、次を使用します。

(SELECT MAX(maktipi) FROM TH_Islem WHERE refNo = @refNo )

または最小:

(SELECT MIN(maktipi) FROM TH_Islem WHERE refNo = @refNo )

または、@makTipi が後で何かをチェックするために使用されるため、返されたすべての値を保持したい場合があります。その場合、 @makTipi をテーブルに変更し、 (SELECT maktipi FROM TH_Islem WHERE refNo = @refNo ) から返されたすべての値をテーブルに挿入する必要があります。そのような:

DECLARE @makTipi TABLE(columName AS VARCHAR)
INSERT @makTipi SELECT maktipi FROM TH_Islem WHERE refNo = @refNo

その後、あなたが持っている場所:

IF ((@hastaTuru = 'Ücretli') AND (@durum = 'AYAKTA')) OR @makTipi = '0'

これを次のように変更します。

IF ((@hastaTuru = 'Ücretli') AND (@durum = 'AYAKTA')) OR EXISTS (SELECT * FROM @makTipi WHERE columnName = '0' )

お役に立てれば!

于 2009-07-22T09:24:31.273 に答える