是否可以在 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 有一行包含值为 X
的 DUMMY
列。)
然后您可以在 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
我有一个关于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 有一行包含值为 X
的 DUMMY
列。)
然后您可以在 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