在oracle中,是否可以分配类型为varchar2的CLUB变量中的查询结果



我有一个关于oracle的问题,但我不知道是否真的可以做到。请求

SELECT (CASE WHEN 50 >  100 and tare = 'tare' THEN 1 ELSE 0 END)as test FROM dual

我是否可以将此请求的结果分配给varchar2类型的任何更改??

在出口我想要some_var:=sql_clob;我想在流程中执行此功能!

让我们假设您的查询是:

SELECT (CASE WHEN 100 > 50 and dummy = 'X' THEN 1 ELSE 0 END)as test FROM dual

(因为DUAL表有一行包含值为XDUMMY列。(

然后,您可以在PL/SQL块中使用光标来迭代结果集:

DECLARE
v_sql    CLOB := 'SELECT (CASE WHEN 100 > 50 and dummy = ''X'' THEN 1 ELSE 0 END)as test FROM dual';
v_value  VARCHAR2(50);
v_cursor SYS_REFCURSOR;   
BEGIN
OPEN v_cursor FOR v_sql;
LOOP
FETCH v_cursor INTO v_value;
EXIT WHEN v_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE( v_value );
END LOOP;
END;
/

或者,您可以使用EXECUTE IMMEDIATE来运行查询:

DECLARE
v_sql    CLOB := 'SELECT (CASE WHEN 100 > 50 and dummy = ''X'' THEN 1 ELSE 0 END)as test FROM dual';
v_value  VARCHAR2(50);
BEGIN
EXECUTE IMMEDIATE v_sql INTO v_value;
DBMS_OUTPUT.PUT_LINE( v_value );
END;
/

两者输出:

1

db<gt;小提琴这里

最新更新