gpt4 book ai didi

Oracle 存储过程 - CASE v_Variable WHEN 'value' OR 'value' THEN

转载 作者:行者123 更新时间:2023-12-01 11:21:39 28 4
gpt4 key购买 nike

这里有一些伪代码来解释我想要做什么:

CREATE OR REPLACE PROCEDURE sproc
(
v_input IN VARCHAR2 DEFAULT NULL
, refCursor OUT SYS_REFCURSOR
)
AS

CASE v_input
WHEN 'A' THEN
OPEN refCursor FOR
SELECT ... FROM ...;

WHEN 'B' OR 'C'
OPEN refCursor FOR
SELECT ... FROM ...;
END CASE;
END sproc;

我怎样才能完成这个“WHEN 'B' OR 'C'”子句?

最佳答案

每个 when 只能使用一个条件使用该语法。但是,如果您在 when 中包含条件变量您可以指定更多值:

CASE 
WHEN v_input = 'A' THEN
OPEN refCursor FOR
SELECT ... FROM ...;
WHEN v_input IN ('B','C')
OPEN refCursor FOR
SELECT ... FROM ...;
END CASE;

简单案例语句和搜索案例语句之间的区别(如 xQbert 所指出的)在 SQL-92(或更高版本)标准中指定。虽然通过足够的工作可能可以找到实际的推理,但我的推测是:

我认为这与一致性有关:在 SQL 的其他地方, bool 运算符如 orand需要完整的比较,例如 x = 1 or y = 2 . bool 运算符永远不能严格用于操作数,例如 x = (1 or 3) .在简单的 case 语法中,比较被打断,这迫使我们做出选择:它们可以 1) 仅支持相等(不支持 in<>< 等;不支持 bool 运算符)或 2) come为仅适用于简单 case 语句的运算符提出一种特殊语法(并且可能提出一个不同于“简单”的术语)。

关于Oracle 存储过程 - CASE v_Variable WHEN 'value' OR 'value' THEN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41859281/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com