我有一个表EPFReport
,我需要用存储过程填充表。
ALTER procedure [dbo].[getEPFData] @EPFCol varchar(max) , @empID varchar(max)
AS
DECLARE @sql nvarchar(max) ;
DECLARE @sql2 nvarchar(max);
set @sql = 'SELECT c.employeeID,c.empName, c.month,@sql1 from Common c where c.employeeID='+@empID
set @sql2= 'SELECT ' + @EPFCol + ' FROM Common where employeeID='+@empID
truncate table EPFReport;
INSERT into EPFReport (empID, empName, monthVal)
execute(@sql);
在此处满足要求,将查询@sql
的结果插入到表中。现在我需要使用@sql2
查询来更新它,所以问题是如何在update
语句的存储过程中执行查询?
PS:对于我使用的插入
INSERT into EPFReport (empID, empName, monthVal)
execute(@sql);
此处还会返回一组结果(每月)。结果不是一行或一行。因此,分配给变量并进行更新并不起作用。
更新:该表包含这些列
[empID] [empName] [EPFItemValues] [monthVal]
第一个查询仅更新3列,第二个查询应更新列EPFItemValues
。
答案 0 :(得分:0)
尝试;
根据您的评论,以下内容应该有效;
DECLARE @ID int = (Select MAX(ID) From EPFReport) // or SCOPE_IDENTITY
Update EPFReport
set EPFItemValues = @sql2
where ID = @ID