在Oracle PL/SQL中,使用EXECUTE IMMEDIATE执行动态SQL查询并返回结果集,可以通过以下几种方式实现: 1. 使用INTO子句返回单行结果 如果你只需要返回单行结果,可以使用INTO子句将查询结果直接存储到变量中。 plsql DECLARE v_sql VARCHAR2(1000); v_column1 VARCHAR2(100); v_column2 NUMBER; BEGIN -- 动态SQL语句...
上面执行存储过程,test3表收集到的数据只有一条。 这是因为在执行execute immediate v_sql into xxx的时候存储过程出现异常了,导致后面的循环终止了。 我们可以采用异常处理来解决。 需求将没有匹配到的值,打个标识来标记。 createorreplaceproceduretest_p()isdeclarecursordatasisselectnamefromtest1;v_sql varchar2...
EXECUTE IMMEDIATE str USING v_1, v_2; commit; end; 2. 返回单条结果 declare str varchar2(500); c_1 varchar2(10); r_1 test%rowtype; begin c_1:='测试人员'; str:='select * from test where name=:c WHERE ROWNUM=1'; execute immediate str into r_1 using c_1; DBMS_OUTPUT.PUT_...
1. EXECUTE IMMEDIATE将不会提交一个DML事务执行,应该显式提交 如果通过EXECUTE IMMEDIATE处理DML命令, 那么在完成以前需要显式提交或者作为EXECUTE IMMEDIATE自己的一部分. 如果通过EXECUTE IMMEDIATE处理DDL命令,它提交所有以前改变的数据 2. 不支持返回多行的查询,这种交互将用临时表来存储记录(参照例子如下)或者用REF ...
一个简单直观的处理方式:将返回结果写入临时表,如:1.先创建一个临时表:TMPTABLE 2.将SQL语法改为:INSERT INTO TMPTABLE SELECT OLUMN1,COLUMN2 FROM TABLENAME1 BEGIN EXECUTE IMMEDIATE 'INSERT INTO TMPTABLE SELECT * FROM TABLENMAE1';END;...
execute immediate v_sql; end loop; end; 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 上面执行存储过程,test3表收集到的数据只有一条。 这是因为在执行execute immediate v_sql into xxx的时候存储过程出现异常了,导致后面的循环终止了。
execute immediate str into r_1 using c_1; DBMS_OUTPUT.PUT_LINE(R_1.NAME||R_1.ADDRESS); end ; 3. 返回结果集 CREATE OR REPLACE package pkg_test as /* 定义ref cursor类型 不加return类型,为弱类型,允许动态sql查询, 否则为强类型,无法使用动态sql查询; ...
SQL 语句, 不是固定的。要等运行的时候, 才能确定下来。\r\n也就像上面那个例子,表名是 外部传入的。\r\n\r\n不过 动态SQL 与 EXECUTE IMMEDIATE 主要用在 存储过程里面。\r\n\r\n假如你是用 C# 或者 Java 之类的开发语言。 访问数据库的话。\r\n是用不到 EXECUTE IMMEDIATE 的。
EXECUTE IMMEDIATE l_sql INTO your_result_variable USING l_name; -- 处理查询结果 END; / ``` 在上述示例中,`:name`是一个绑定变量,我们使用`USING`子句为其提供了实际的值`l_name`。这样,当SQL语句执行时,它实际上会查找名称为"John"的员工。 需要注意的是,使用`EXECUTE IMMEDIATE`时,你需要确保动态...
Oracle中的"execute immediate"是一个关键工具,主要用于在编程时动态执行SQL语句。这个命令在处理非预编译的、需要根据运行时输入动态构建的SQL查询时尤为有用。例如,当你需要在存储过程中根据传入的参数,如表名,来检索数据时,静态的SQL如'COUNT(*) FROM v_variable'就无法直接执行。此时,就需要借助...