Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Plsql 在过程中使用简单的case语句_Plsql_Case_Procedure - Fatal编程技术网

Plsql 在过程中使用简单的case语句

Plsql 在过程中使用简单的case语句,plsql,case,procedure,Plsql,Case,Procedure,当我更新表时,我对自己说我的方法很麻烦,所以我想到使用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 V

当我更新表时,我对自己说我的方法很麻烦,所以我想到使用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;
/
我的案例:

 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;
/
更新tbh
集合c=
当a>b然后是“W”时的情况
当a
我的尝试:

 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;
/
创建或替换程序WIN(在P_WT VARCHAR2(3)中)
开始
案例P_WT
当a>b时
更新tbh集合c='W';
当a
您可以简单地使用纯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 
对于您的问题,我认为使用oracle switch case不是一个明智的解决方案。

对于一些简单的示例,您可以查看或使用纯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 
对于您的问题,我认为使用oracle switch case不是一个明智的解决方案。

对于一些简单的示例,您可以看到或

是的,我可以,但我真的希望通过一个程序进行尝试。和我一样,我的语法可能有点不对劲,这就是我寻求帮助的原因@莫森·海达里:据我所知,这一过程意味着检测“赢”的状态——赢、输、平。因此,也许您可以通过删除不理解的注释并添加原始过程名称来改进您的答案。(我会准备好我的+1)谢谢4聪明的评论朋友;)是的,我可以,但我真的想通过一个程序来尝试。和我一样,我的语法可能有点不对劲,这就是我寻求帮助的原因@莫森·海达里:据我所知,这一过程意味着检测“赢”的状态——赢、输、平。因此,也许您可以通过删除不理解的注释并添加原始过程名称来改进您的答案。(我会准备好我的+1)谢谢4聪明的评论朋友;)