SQL结果操作问题

时间:2010-06-14 23:58:33

标签: sql sql-server

我知道我错过了这个问题,这可能就是我自己无法找到解决方案的原因:

如何在存储过程中获取结果并更改

等数据
    if column1 = AAA then 
      column1=Hello
    else if column1 = BBB then 
     column1 = goodbye

并使用新值返回数据?

谢谢

4 个答案:

答案 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