1

在更新表格时,我对自己认为我的方式非常麻烦,所以我想使用 case 语句。虽然我想在一个简单的过程中使用它,但这就是我的问题所在!似乎无法正确处理。

非常感谢您的帮助。

我的桌子:

 drop table tbh;
 CREATE TABLE tbh ( a NUMBER, b number, c varchar2(3));
 INSERT INTO tbh VALUES( 1, '0','');
 INSERT INTO tbh VALUES( 2, '2','');
 INSERT INTO tbh VALUES( 3, '7','');

我的情况:

UPDATE tbh
SET c =
CASE WHEN a > b THEN 'W'
WHEN a < b THEN 'L'
WHEN a = b THEN 'D'
END ;

我尝试了什么:

CREATE OR REPLACE PROCEDURE WIN (IN P_WT VARCHAR2(3))
BEGIN
CASE P_WT
WHEN a > b THEN
UPDATE tbh SET c = 'W';
WHEN a < b THEN
UPDATE tbh SET c = 'L';
WHEN a = b THEN
UPDATE tbh SET c = 'D';
END CASE;
END;
/
4

1 回答 1

4

您可以简单地使用纯 sql:

UPDATE tbh
SET c = 'W'
where a > b 

UPDATE tbh
SET c = 'L'
where a < b 

UPDATE tbh
SET c = 'D'
where a = b 

更新:Thanks to @Wolf P. for the comment

CREATE OR REPLACE PROCEDURE detectMatchResult as
BEGIN
UPDATE tbh
    SET c = 'W' -- Win
    where a > b ;

    UPDATE tbh
    SET c = 'L' -- Lose
    where a < b ;

    UPDATE tbh
    SET c = 'D' -- Draw
    where a = b; 
Commit;
END;

我不认为使用 oracle switch case 是解决您问题的明智之举。
对于一些简单的示例,您可以在此处此处查看

于 2013-05-05T17:17:48.183 回答