2017-11-15 5 views
-4

SQL(SSMS)のストアドプロシージャで単一の列を使用して複数の行を渡す方法はありますか または プロシージャ内で単一の列の値を渡す方法。SQLのストアドプロシージャ内の単一の列で複数の行を渡す方法

CREATE TYPE tblAge_Type as TABLE 
(
    ID int, 
    Age int 
) 
-------------------------------------------------------------------------------------- 
alter PROCEDURE spAddAge (
    @datasource tblAge_Type READONLY) 
AS 
    update tblAge set Age = (select Age from @datasource) where Id = (select ID from @datasource) 

GO 
------------------------------------------------------------------------------------------ 
DECLARE @data AS tblAge_Type 

INSERT into @data VALUES(1,22) ; 
INSERT into @data VALUES(2,55) ; 
INSERT into @data VALUES(3,44); 

EXEC spAddAge @data 

サブクエリが1つ以上の値を返しました。 =、!=、<、< =、>、> =、またはサブクエリが式として使用されている場合は、これは許可されません。

+0

あなたは 'EXEC TestParams「最初の」簡単な方法で試みることができる「第2」 GO' –

+1

を問題とあなた自身の努力これについての詳細を追加してください遠くに問題を解決して、人々があなたをより良く助けることができるようにします。 [良い質問をするにはどうすればいいですか?](https://stackoverflow.com/help/how-to-ask) – pirho

答えて

1

標準的な方法はありません。 これが行われる最も一般的な方法は次のとおりです。 1)カンマ区切りの文字列を作成し、それをパラメータとして渡します。手順では、文字列をテーブルに分割します。周囲には多くの文字列分割関数があり、ループを使用しない関数を使用することをお勧めします。私は、SQL Serverの最新バージョンには文字列分割機能もあると思います。 2)ここで説明するように、テーブル値パラメーターを渡します、How to pass a table-value parameter

+0

はテーブル値のパラメータを使用しています。問題文のコードとエラーを追加しました – Babita

+0

これは動作しません。あなたは質問を策定した、私はそれに答えた。あなたが現在持っている問題は、タイトルの問題とは異なります。別の質問を作成し提出する必要があります。 –

関連する問題