CREATE PROCEDURE UP
(
@A_L nvarchar(20)
)AS
declare @LF bit
declare @sql varchar(1024)
declare @Update int
set @Update = 0;
select @LF=LF from A WHERE ID= @A_L
IF @LF IS NOT NULL
BEGIN
select @sql = 'UPDATE A SET state = 2 WHERE (ID = @A_L)'
select @Update = 1; END
if @Update = 1
exec(@sql); UPDATE不起作用。问题出在哪里?
(
@A_L nvarchar(20)
)AS
declare @LF bit
declare @sql varchar(1024)
declare @Update int
set @Update = 0;
select @LF=LF from A WHERE ID= @A_L
IF @LF IS NOT NULL
BEGIN
select @sql = 'UPDATE A SET state = 2 WHERE (ID = @A_L)'
select @Update = 1; END
if @Update = 1
exec(@sql); UPDATE不起作用。问题出在哪里?
print出来看看阿
select @sql = 'UPDATE A SET state = 2 WHERE (ID = ''' + @A_L + ''')'
select @sql = 'UPDATE A SET state = 2 WHERE ID = ' + convert(varchar,@A_L)或者
exec(@sql) 改成 exec sp_executesql @sql,N'@A_L int',@A_L两者选1
上面的办法都不行。
直接改成
select @sql = 'UPDATE A SET state = 2 WHERE ID =232 ’
都不行。。
改成
select @sql =‘SELECT * FROM A WHERE (ID = 232 )’
有数据输出
declare @sql nvarchar(1024) -- 这个必须是 nvarchar 类型,然后
exec(@sql)
改成
exec sp_executesql @sql,N'@A_L nvarchar(20)',@A_L
declare @sql nvarchar(1024) -- 这个必须是 nvarchar 类型,然后
exec(@sql)
改成
exec sp_executesql @sql,N'@A_L nvarchar(20)',@A_L
-------------
改了。用查询分析器测试..无效
然后执行print出来的语句,看看如何
把@sql=SELECT *FROM A WHERE (ID = @A_L)
用查询分析器测试..有输出数据。UPDATE 无法修改
(
@A_L nvarchar(20)
)
AS
declare @LF bit
declare @sql nvarchar(1024) /*声明为nvarchar类型*/
select @LF=LF from A WHERE ID= @A_L
IF @LF IS NOT NULL
BEGIN
set @sql = N'UPDATE A SET state = 2 WHERE (ID = @A_L)'
EXEC sp_executesql @sql,N'@A_L nvarchar(20)',@A_L
END
GO
直接在企业管理器中执行 UP @A_L=111
就有效