
正文
oracle存储过程执行sql,Oracle存储过程执行查询语句
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
oracle存储过程中如何执行动态SQL语句
有时需要在oracle
存储过程
中执行动态SQL
语句
,例如表名是动态的,或字段是动态的,或查询命令是动态的,可用下面的方法:
set
serveroutput
on
declare
n
number;
sql_stmt
varchar2(50);
t
varchar2(20);
begin
execute
immediate
'alter
session
set
nls_date_format=''YYYYMMDD''';
t
:=
't_'
||
sysdate;
sql_stmt
:=
'select
count(*)
from
'
||
t;
execute
immediate
sql_stmt
into
n;
dbms_output.put_line('The
number
of
rows
of
'
||
t
||
'
is
'
||
n);
end;
如果动态SQL
语句
很长很复杂,则可用包装.
CREATE
OR
REPLACE
PACKAGE
test_pkg
IS
TYPE
cur_typ
IS
REF
CURSOR;
PROCEDURE
test_proc
(v_table
VARCHAR2,t_cur
OUT
cur_typ);
END;
/
CREATE
OR
REPLACE
PACKAGE
BODY
test_pkg
IS
PROCEDURE
test_proc
(v_table
VARCHAR2,t_cur
OUT
cur_typ)
IS
sqlstr
VARCHAR2(2000);
BEGIN
sqlstr
:=
'SELECT
*
FROM
'||v_table;
OPEN
t_cur
FOR
sqlstr;
END;
END;
/
在oracle
中批量导入,导出和删除表名以某些字符开头的表
spool
c:\a.sql
select
'drop
table
'
||
tname
||
';'
from
tab
where
tname
like
'T%';
spool
off
@c:\a
相关问答
Q1: oracle存储过程循环执行SQL语句
实现方式错了,批量移动数据应该使用Cursor,而不是像分页那样每次都查询。
每次都查询可能会导致重复数据。
正确方式应该是打开一个Cursor,循环Cursor来插入,使用计数器来控制每次COMMIT的行数:
declare
TYPE R_CURSOR IS REF CURSOR;
i number;
a1_cursor R_CURSOR;
a1_row A1%ROWTYPE;
begin
open a1_cursor FOR
select ID, NAME from A1;
i := 0;
loop
fetch a1_cursor
into a1_row;
exit when a1_cursor%notfound;
INSERT INTO A2 VALUES a1_row;
i := i + 1;
if i = 5 then
commit;
i := 0;
end if;
end loop;
close a1_cursor;
commit;
end;
Q2: oracle存储过程sql执行超时
oracle存储过程sql执行超时要优化系统。优化系统步骤:
1、参数默认是30秒,执行的sql超过30秒就会报超时错误。
2、优化sql让执行更快。
3、修改这个参数,在调用执行SQL语句之前。Oracle公司(甲骨文)是全球最大的信息管理软件及服务供应商,成立于1977年,总部位于美国加州Redwoodshore,面向全球开放oracle认证,Oracle开发的关系数据库产品因性能卓越而闻名,Oracle数据库产品为财富排行榜上的前1000家公司所采用。
Q3: oracle 存储过程执行动态sql实例
oracle的动态sql是指在语句块使用execute immediate 执行sql语句,sql语句可以使用存储过程传的参数进行拼接,本文针对varchar2和number两种类型的参数类型,进行sql拼接并执行。
功能:输入日期区间,销售数量满足上限和下限的产品id
1.正常传值
输出结果
2.若果number类型的参数传空,会报ora-00936:缺失表达式,可以在存储过程中增加对参数null值的判断
oracle 动态拼接传入参数,varchar2类型可以使用'''|| IN_START_DTIME || ''' ,number类型可以使用'||IN_DOWN_LIMIT||' ; 拼接的过程需要注意校验参数的合法性,增加存储过程的容错性。临时表使用了会话级,存储过程执行完,可以通过查询存储过程获取结果。
Q4: 如何使用oracle存储过程执行外部的sql脚本文件?
你把脚本内容直接在存储过程中实现,然后利用job去定时调度就好了。
Q5: oracle存储过程执行很慢sql很快
存储过程放在查询分析器中执行,大概耗时5秒左右即可成功执行,但是在网站中执行却会超时 1. 将该存储过程放到查询分析器中执行,大概耗时5秒左右即可成功执行,但是在网站中执行却会超时; 2. 经查阅资料,这里..
oracle存储过程执行sql的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Oracle存储过程执行查询语句、oracle存储过程执行sql的信息别忘了在本站进行查找喔。








