数据库|mysql教程
oracle,存储,过程,临时,游标,示例,如下,DD
数据库-mysql教程
ios美丽说源码,ubuntu卡安装界面,爬虫技术能做到,php检测php 菜鸟教程,东莞seo整站lzw
总结如下: DDL是一种消耗资源非常大的操作,运行时尽量不要使用DDL语句,应用程序需要的临时表应在运行之前就开始创建。不必在每个存储过程中创建一次。临时表总是存在的,他们作为对象存在于数据字典中,并且总是保持为空,直到有会话在其中放入数据 1 创
手机钓鱼源码,vscode怎么打开工作区间,ubuntu 取消注释,tomcat编译jsp错误,教同事爬虫,本地测试php代码,深圳小红书推广乐云seolzw
h5青龙源码,Vscode不能显示图片,Ubuntu桌面包,域名访问不到tomcat,爬虫龟,php 凌晨时间戳,娄底seo优化有哪些,php农业商城网站源码,炫酷登录模板lzw
总结如下:
DDL是一种消耗资源非常大的操作,运行时尽量不要使用DDL语句,应用程序需要的临时表应在运行之前就开始创建。不必在每个存储过程中创建一次。临时表总是存在的,他们作为对象存在于数据字典中,并且总是保持为空,直到有会话在其中放入数据
1 创建临时表
Sql代码
create global temporary table 表名
(
IDVARCHAR2(100 CHAR),
NAME VARCHAR2(100 CHAR)
)
on commit preserve rows;
2 创建存储过程
Sql代码
create or replace procedure proc_XXX(
mycur out SYS_REFCURSOR
as
TYPE My_CurType IS REF CURSOR;
CUR_1 My_CurType;
tempa varchar2;
tempb varchar2;
–此处可声明更多变更^_^
begin
OPEN CUR_1 FOR select * from 表名;
–使用前先清空
execute immediate ‘truncate table 临时表表名’;
LOOP
FETCH CUR_1 INTO tempa;
EXIT WHEN CUR_1%NOTFOUND;
–进行相关的业务查询,将结果返回于更多变量上,插入临时表数据
tempa:=’1′;
tempb:=’jack’;
insert into 临时表表名(ID,NAME)values(tempa,tempb);
commit;
end loop;
open mycur for select * from 临时表表名;
CLOSE CUR_1;
message :=’查询临时表成功’;
EXCEPTION
WHEN OTHERS THEN
message :=’查询临时表失败’;
end proc_XXX;
参考更多
1 创建临时表,插入数据,返回结果集
Sql代码
CREATE OR REPLACE PROCEDURE Report_Month_Responsibility(
o_cur OUT SYS_REFCURSOR
)
IS
STR VARCHAR2(200);
tb_count INT;
BEGIN
–先判断全局临时表是否存在,没存在则重新建立:
select count(*) into tb_count from dba_tables where table_name=’REPROTTEST’;
if tb_count=0 then
STR:=’ CREATE GLOBAL TEMPORARY TABLE REPROTTEST(
ID INT,
ANAME VARCHAR2(20)
) ON COMMIT PRESERVE ROWS’;
execute immediate STR;
end if;
STR:=’INSERT INTO REPROTTEST(ID,ANAME) VALUES(1,”1”)’;
execute immediate STR;
COMMIT;
STR:=’SELECT * FROM REPROTTEST’;
OPEN o_cur FOR STR; — 给游标变量赋值
END Report_Month_Responsibility;
2 调用存储过程
Sql代码
CREATE OR REPLACE PROCEDURE proc_X()
IS
v_ID INT;
v_ANAME VARCHAR2(20);
–定义游标:
v_account_cur SYS_REFCURSOR;
BEGIN
–调用存储过程:
Report_Month_Responsibility(v_account_cur);
fetch v_account_cur into v_ID,v_ANAME;
–用循环显示游标中的记录:
while v_account_cur%found loop
dbms_output.put_line(‘The value of column ID is: ‘||v_ID);–打引列ID
dbms_output.put_line(‘The value of column ANAME is: ‘||v_ANAME);
–打引列ANAME
fetch v_account_cur into v_ID,v_ANAME;
end loop;
close v_account_cur;
execute immediate ‘truncate TABLE REPROTTEST’;
end proc_X;