www.7671.net > orAClE存储过程输出语句

orAClE存储过程输出语句

如果存储过程不复杂可以直接在代码里做.比如创建表,插入数据,读取数据,在dao中批量执行就OK了.不知道你是不是想输出存储过程里面执行的语句,验证存储过程正确性或者存储过程中执行语句的速度.如果是java程序获取存储过程的语句,在存储过程中定义一个变量用来存放需要执行的语句,执行这条语句用EXECUTE IMMEDIATE.例如定义变量 v_sql := 'insert into test(test_col) values(1)';执行语句 execute IMMEDIATE v_sql; 提交 commit;然后把需要输出的语句放入临时表.如果需要在java程序中输出则直接读取这张表相应记录就可以了.

可用DBMS_OUTPUT.PUT_LINE()对存储过程的进行输出.编写存储过程:create or replace procedure test_pro(in_num number) as M number;begin M := in_num;if 0 < M then dbms_output.put_line('输出SQL语句1');elsif M < 3 then dbms_

execute immediate 说明动态执行,效率性能提升创建的是临时表ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截断表(删除全部行)

reate or replace procedure get_content_river(cxrq in varchar2,--查询日期 fsr in varchar2,--发送人自动发送写自动发送 content out varchar2, bz out varchar2,--0为失败1为成功 msg out varchar2) isv_zm varchar2(50);v_xzqy varchar2(20);v_xzbm

可以用 EXISTS 来 替换掉 IN例如:delete from t1 where EXISTS ( SELECT * FROM tableid WHERE t1.tid = tableid.tid )理论上说,速度会比用 IN 快一点.

作不到吧,存储过程又并不支持线程,你可以把要插入的数据union all,然后用一条带并行指示的语句进行插入insert /*+ parallel(tablename, 3) */ into tablenameselect * from table1union all select * from table2union all select * from table3

可以使用expdp,不过很麻烦主要是看你的需求,如果只是一两个存储过程,例:select text from all_source where name = ''; --引号里面填写要查看的存储过程名字.

假设第一个参数为in参数,每二个参数为out参数:variable x number; //定义一个绑定变量exec 过程(1,:x) //1为输入参数,x为输出参数,过程执行后x就得到输出值了.print x //看结果

分几个步骤 1,创建输出路径,比如你要在c盘test目录下输出,你就先要建立好这个test路径 2,sqlplus下以sysdba登录,执行以下语句 3,create or replace directory TMP as 'c:\test'; 4,grant read,write on directory TMP to 你要生成文件的用户; 5,

存储过程可以实现扩展性极强的功能,易难都有;下面给你个基础列子:create or replace PROCEDURE test_owen -定义名称 (in_bakk_id in number, -定义输入值 on_code out number) -定义输出值 is--v_bakk varchar(8); begin -开始实施 insert into an_bakk_mid select * from an_bakk where bakk_id = in_bakk_id; --操作语句提取数据到中间表end test_owen; -结束

友情链接:dkxk.net | knrt.net | so1008.com | zxwg.net | qwfc.net | 网站地图

All rights reserved Powered by www.7671.net

copyright ©right 2010-2021。
www.7671.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com