我有以下数据
DECLARE @SEATCAT NVARCHAR(MAX) = N'GEN'
DECLARE @PROG NVARCHAR(MAX) = N'U03'
declare @sql1 nvarchar(max)
begin
declare @sql nvarchar(max)
set @sql = 'Update SHEAT SET [' + @SEATCAT + '] = [' + @SEATCAT + ']-1 Where PROGRAM='' + P01 +''';
exec sp_executesql @sql
end
Select GEN FROM SHEAT Where PROGRAM=@PROG;`
我想: 用户执行存储过程setQuota参数@PROGRAM说P02,有些@category说GNF。
结果应该是: 将该类别的计划价值减一。 也就是说,对于P02,GNF将是1
我有以下代码
{{1}}
我收到错误:
答案 0 :(得分:1)
您缺少引号,并且正在使用P01
之类的变量,但它尚未定义。你的意思是写@PROG
所以它就像是
Where PROGRAM=''' + @PROG + ''';
进一步说明:如果这些变量中的任何一个来自用户输入(例如某人输入),那么您应该真正研究SQL Injection攻击,因为您可能允许通过此过程运行任意代码