Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 使用“in”SQL函数中的值将逗号分隔的值从.NET传递到存储过程_Asp.net_Sql Server_Vb.net_Sql Server 2005 - Fatal编程技术网

Asp.net 使用“in”SQL函数中的值将逗号分隔的值从.NET传递到存储过程

Asp.net 使用“in”SQL函数中的值将逗号分隔的值从.NET传递到存储过程,asp.net,sql-server,vb.net,sql-server-2005,Asp.net,Sql Server,Vb.net,Sql Server 2005,我有一个类似于以下内容的SQL查询: create procedure test ( @param1 nvarchar(max) ) as begin select * from table where column1 in (@param1) end 现在,我需要从我的.net应用程序中传递@param1的值,以便上面的查询能够工作 有人能告诉我如何从我的VB.NET代码中传递与下面类似的值吗 ‘1’、‘2’、‘3’ 我的主要问题是如何从我的.NET应用程序中构造上述示例中的参

我有一个类似于以下内容的SQL查询:

create procedure test
(
   @param1 nvarchar(max)
)
as
begin
    select * from table where column1 in (@param1)
end
现在,我需要从我的.net应用程序中传递@param1的值,以便上面的查询能够工作

有人能告诉我如何从我的VB.NET代码中传递与下面类似的值吗

‘1’、‘2’、‘3’


我的主要问题是如何从我的.NET应用程序中构造上述示例中的参数值?

像这样,我将创建一个解析它的

   select * 
   from table 
   where field in (select field from dbo.myfunction(@param1))

我认为问题不在于你传递的价值观@param1只是一个字符串

您需要在您的程序中解决此问题。select语句将无法识别in子句中的值。一种解决方案是采用逗号分隔的字符串,并将每条记录插入到表变量中

如果您的表变量是table@param_list,则您的过程测试如下所示:

create procedure test ( @param1 nvarchar(max) ) 
as begin 
select * from table where column1 in (Select thefield from @param_list); 
end

对于这种类型的东西,我使用这个函数,并按如下方式使用它:

从my table中选择Column1、column2,其中从Fnspit'1,2,3,4,5,6'、'中选择项中的ID

create FUNCTION [dbo].[fnSplit](
        @sInputList VARCHAR(8000) -- List of delimited items
      , @sDelimiter VARCHAR(8000) = ',' -- delimiter that separates items
    ) 

RETURNS @List TABLE (item VARCHAR(8000))

BEGIN
DECLARE @sItem VARCHAR(8000)
WHILE CHARINDEX(@sDelimiter,@sInputList,0) <> 0
 BEGIN
 SELECT
  @sItem=RTRIM(LTRIM(SUBSTRING(@sInputList,1,CHARINDEX(@sDelimiter,@sInputList,0)-1))),
  @sInputList=RTRIM(LTRIM(SUBSTRING(@sInputList,CHARINDEX(@sDelimiter,@sInputList,0)+LEN(@sDelimiter),LEN(@sInputList))))

 IF LEN(@sItem) > 0
  INSERT INTO @List SELECT @sItem
 END

IF LEN(@sInputList) > 0
 INSERT INTO @List SELECT @sInputList -- Put the last item in
RETURN
END

你是个救生员。非常感谢你查看这篇文章