我知道我错过了这个问题,这可能就是我自己无法找到解决方案的原因:
如何在存储过程中获取结果并更改
等数据 if column1 = AAA then
column1=Hello
else if column1 = BBB then
column1 = goodbye
并使用新值返回数据?
谢谢
答案 0 :(得分:1)
使用CASE声明:
SELECT CASE
WHEN column1 = 'AAA' THEN 'Hello'
WHEN column1 = 'BBB' THEN 'goodbye'
ELSE ... -- optional
END
答案 1 :(得分:1)
这两个问题:
UPDATE table_name SET column1 ='Hello'WHERERE column1 ='AAA'
UPDATE table_name SET column1 ='goodbye'WHERE column1 ='BBB'
答案 2 :(得分:0)
如果可以访问存储过程的内容,则应将其更改为表值函数 - 如果可能,应将其更改为内联函数(因为它具有更高的可能性进行优化)。 / p>
这将让您查询结果并根据需要进行更改:
SELECT CASE column1
WHEN 'AAA' THEN 'Hello'
WHEN 'BBB' THEN 'goodbye'
END as NewColumn,
,*
FROM dbo.yourNewFunction() as t;
如果你不能这样做,并且非常坚持使用存储过程,你可以将它包装在OPENROWSET中:
SELECT CASE column1
WHEN 'AAA' THEN 'Hello'
WHEN 'BBB' THEN 'goodbye'
END as NewColumn,
, *
FROM OPENROWSET('SQLNCLI','Server=.;Trusted_Connection=Yes;','EXEC dbo.YourProc') as t;
这是一种将过程的输出视为表表达式的方法,但是如果你可以在没有这个过程的情况下完成它,那就更好了。
答案 3 :(得分:0)
你必须重命名以my开头的所有内容到实际的表名
CREATE PROCEDURE myProc
AS
BEGIN
UPDATE myTable
SET Column1 =
CASE
WHEN 'AAA' THEN 'Hello'
WHEN 'BBB' THEN 'goodbye'
END
WHERE Column1 in ('AAA','BBB')
OUTPUT myTable.myIDColumn, INSERTED.Column1
END
更新表格并在您
后仅返回更新的记录EXEC myProc
参考 1. http://technet.microsoft.com/en-us/library/ms177564.aspx