0

ASP.NET Webサイト(c#)があり、コードビハインドでSQLhttp://www.w3schools.com/sql/sql_in.aspの演算子を使用してデータベースからデータを取得したいと考えてINます。

構文は次のとおりです。

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)

ストアドプロシージャを使用してデータを取得します。このプロシージャ内で、最後にselectを実行します。

私の質問はvalue1, value2, ...、クエリの()部分を動的に構築する方法ですか?オペレーターSqlParameterに表示される値を(s)として送信するにはどうすればよいですか?IN

ストアドプロシージャは次のように定義されます。

CREATE PROCEDURE [dbo].[GetAllUsers]
    @ORGANIZATION_ID int = null
AS
BEGIN
    SET NOCOUNT ON;

    begin
       SELECT * 
       from USERS
       where ORGANIZATION_ID = @ORGANIZATION_ID
    end
END

WHERE条項を次のようなものに置き換えたいと思います。

WHERE ORGANIZATION in (xxxxxxxxxxxxx)

これを行う方法?

ありがとうございました。

4

1 に答える 1

1

動的SQLを使用できます:

CREATE PROCEDURE [dbo].[GetAllUsers]
    @ORGANIZATION_ID varchar(max) = null
AS
BEGIN
    declare @sql varchar(max)
    @sql = 'SELECT * 
            from USERS
            where ORGANIZATION_ID in ('+@ORGANIZATION_ID+')' 
    SET NOCOUNT ON;
        begin
          exec(@sql)  
        end
END

タイプ@ORGANIZATION_IDを varchar に変更し、プロシージャを実行する必要があります

1 つの ID:

exec '1' 

または ID のリスト:

exec '1,2,3,4' 
于 2012-10-24T11:58:17.820 に答える