Sql server 创建一个过程,该过程将更新输入变量中所有ID的表记录
我能够运行下面的查询Sql server 创建一个过程,该过程将更新输入变量中所有ID的表记录,sql-server,tsql,stored-procedures,Sql Server,Tsql,Stored Procedures,我能够运行下面的查询 update tab_A set Analyzed=1 where id in (1,2,3,4) 现在我想通过一个存储过程来实现它,如下所示 create procedure mark @variable varchar(max) as begin update tab_A set Analyzed=1 where id in (@variable) end 如果没有更简单的方法,我必须创建函数 如果有人找到这个话题,需要同样的帮助,我就把
update tab_A set Analyzed=1 where id in (1,2,3,4)
现在我想通过一个存储过程来实现它,如下所示
create procedure mark
@variable varchar(max)
as
begin
update tab_A set Analyzed=1 where id in (@variable)
end
如果没有更简单的方法,我必须创建函数 如果有人找到这个话题,需要同样的帮助,我就把它留在这里
ALTER FUNCTION [dbo].[fn_Split] (
@p_str NTEXT,
@p_del CHAR(1)
)
RETURNS @ret TABLE (item nvarchar(4000))
WITH SCHEMABINDING
AS
BEGIN
DECLARE @l_n INT;
DECLARE @l_pos INT;
DECLARE @l_tmp NVARCHAR(2000);
SET @l_pos = 1;
SET @l_tmp = SUBSTRING(@p_str, @l_pos, 2000);
SET @l_n = CHARINDEX(@p_del, @l_tmp);
WHILE(ISNULL(@l_n, 0) != 0) BEGIN
INSERT INTO @ret
SELECT LTRIM(RTRIM(SUBSTRING(@l_tmp, 1, @l_n - 1)));
SET @l_pos = @l_pos + @l_n;
SET @l_tmp = SUBSTRING(@p_str, @l_pos, 2000);
SET @l_n = CHARINDEX(@p_del, @l_tmp);
END;
IF(LTRIM(RTRIM(SUBSTRING(@p_str, @l_pos, (DATALENGTH(@p_str) / 2) - @l_pos + 1))) != '')
INSERT INTO @ret
SELECT LTRIM(RTRIM(SUBSTRING(@p_str, @l_pos, (DATALENGTH(@p_str) / 2) - @l_pos + 1)));
RETURN;
END
试着这样做
CREATE PROCEDURE mark
@variable VARCHAR(max)
AS
BEGIN
DECLARE @sql NVARCHAR(Max)
SET @sql='update tab_A set Analyzed=1 where id IN ('''+Convert(NVARCHAR(max),@variable)+''') '
EXEC (@sql)
END
我真的不明白你在问什么…在你的过程中尝试下面的查询
CREATE PROCEDURE mark
@variable VARCHAR(max)
AS
BEGIN
DECLARE @sql NVARCHAR(Max)
SET @sql='update tab_A set Analyzed=1 where id IN ('''+Convert(NVARCHAR(max),@variable)+''') '
EXEC (@sql)
END