我有一个ASP.NET网站(c#),在代码隐藏中,我想使用SQL http://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)
怎么做?
谢谢。
答案 0 :(得分: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并使用
一个id:
exec '1'
或ID列表:
exec '1,2,3,4'