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

Is it possible in the oracle to assign the result of the query which is in the CLUB variable with type varchar2?

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

 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 table 有一行包含值为 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<>fiddle here