0

我有一个 ASP.NET 网站 (c#),在代码隐藏中我想使用INSQL http://www.w3schools.com/sql/sql_in.asp中的运算符从我的数据库中获取数据。

语法是:

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

我使用存储过程来获取数据,在这个过程中我运行,最后,选择。

我的问题是如何动态构建value1, value2, ...查询的 ( ) 部分?如何将SqlParameter出现在IN运算符中的值作为(s)发送?

存储过程定义如下:

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 并使用

一个身份证:

exec '1' 

或 ID 列表:

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