当前位置:首页 » 存储配置 » oracle存储动态sql语句

oracle存储动态sql语句

发布时间: 2023-05-17 07:47:29

‘壹’ oracle动态sql语句执行问题

直接调用就可以了。举个例子把 B 存储过程调用A 存储过程。
PROCEDURE A (p_1 in number,p_2 out number)

is
v_1 number;
begin
V_1:=p_1;
p_2:=v_1;
end A;

(1)如果A 与B同在一个package里面的话。那么 B里面直接可以调用A
PS:如果A,B在同一个Package 中无法调用的话,那么很可能是A,B在Spec里没有声明。一个package包含Spec 和Body,两层。不能调用很可能没有声明。声明后应该ok!

PROCEDURE B(p_1 in number)
is
v_result number;

begin

v_result =A(p_1);

end B;
其中v_result就是调用A的结果,A的返回值。

(2)如果A与B不在同一个package的话
那么B在调用A 的时候,需要加上pkg的名字
比如:A 存储过程在pkg :xxom_test_pkg 中

PROCEDURE B(p_1 in number)
is
v_result number;
begin
v_result = xxom_test_pkg .A(p_1);

end B;

----------------------------------------------------------
以上简单介绍了存储过程的调用。
希望对你有帮助

‘贰’ Oracle [存储过程] 执行动态拼接SQL语句并返回结果

建议你用 instr函数,v_sql条件改为
where instr(p_jbm,t.jbm)>0试试吧。

‘叁’ oracle存储过程中如何执行动态SQL语句 详细

有旁御时需要在oracle
存储过程中执行动态SQL
语句
,例如表名是动态的,或字段是动态的,
或查询命令是动态的,可用下面的方法:
set
serveroutput
ondeclaren
number;sql_stmt
varchar2(50);
t
varchar2(20);beginexecute
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_pkgISTYPE
cur_typ
IS
REF
CURSOR;
PROCEDURE
test_proc
(v_table
VARCHAR2,t_cur
OUT
cur_typ);END;/
CREATE
OR
REPLACE
PACKAGE
BODY
test_pkgISPROCEDURE
test_proc
(v_table
VARCHAR2,t_cur
OUT
cur_typ)ISsqlstr
VARCHAR2(2000);BEGINsqlstr
:=
'SELECT
*
FROM
'||v_table;
OPEN
t_cur
FOR
sqlstr;END;END;/
在oracle
中批量导入,导出和删除表名以某些字符开头的表
spool
c:\a.sql

‘肆’ Oracle存储过程 动态sql报错

execute immediate 'select count(1), count(distinct send_userid) ' ||
'from (select distinct query_key, send_userid ' ||
' from ' || t_name ||
' t where send_time >= trunc( ' || v_date ||
' ) + ( ' || i || ' - 1) / 48 ' ||
' and send_time < trunc(:1) + ' || i ||
' / 48) r '
into SEND_LETTERS1, SEND_UIDS1
using v_date;
into要放在外面,参数也要在外面

‘伍’ oracle数据库动态SQL语句问题

是这样子的:
正常的SQL应该是这样:
SELECT COUNT(*) FROM USER_TABLES WHERE TABLE_NAME='EMP';
然后游态V_SQL:='';最外层也是有引号的
当表名是变量,但是我们查的时候是需要加上单引号的,销磨逗如果最外面的单引号的话,则里面的单引号就需要单引号再加单引号这样来引用的。
所以,如亏卖果你测试你的V_SQL写的正常不正常的话,可以用raise_application_error(-20201,V_SQL);查看,因为这样输出的是正常的sql的哦。

‘陆’ oracle 存储过程 动态sql语句

procere bulupdate语法上的错误

  1. 参数定义时的数据类型不能指定长度,varchar2(200)改为varchar2

  2. sqlstring里那个加号去掉

  3. open cursor 时,cursor名应该是定义的过程参数cur

‘柒’ 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||' ; 拼接的过程需要注意校验参数的合法性,增加存储过程的容错性。临时表使用了会话级,存储过程执行完,可以通过查询存储过程获取结果。

‘捌’ Oracle 存储过程内部如何执行一个sql语句

用 execute immediate mSql;来执行,也就是Oracle的动态 sql 语句

‘玖’ 怎样SQL存储过程中执行动态SQL语句

1.EXEC的使用
EXEC命令有两种用法,一种是执行一个
存储过程
,另一种是执行一个动态的
批处理
。以下所讲的都是第二种用法。
下面先使用EXEC演示一个例子,代码1
DECLARE
@TableName
VARCHAR(50),@Sql
NVARCHAR
(MAX),@OrderID
INT;
SET
@TableName
=
'Orders';
SET
@OrderID
=
10251;
SET
@sql
=
'SELECT
*
FROM
'+QUOTENAME(@TableName)
+'WHERE
OrderID
=
'+
CAST(@OrderID
AS
VARCHAR(10))+'
ORDER
BY
ORDERID
DESC'
EXEC(@sql);
sp_executesql命令在SQL
Server中引入的比EXEC命令晚一些,它主要为重用执行计划提供更好的支持。
为了和EXEC作一个鲜明的对比,我们看看如果用代码1的代码,把EXEC换成sp_executesql,看看是否得到我们所期望的结果
DECLARE
@TableName
VARCHAR(50),@sql
NVARCHAR(MAX),@OrderID
INT
,@sql2
NVARCHAR(MAX);
SET
@TableName
=
'Orders
';
SET
@OrderID
=
10251;
SET
@sql
=
'SELECT
*
FROM
'+QUOTENAME(@TableName)
+
'
WHERE
OrderID
=
'+CAST(@OrderID
AS
VARCHAR(50))
+
'
ORDER
BY
ORDERID
DESC'
EXEC
sp_executesql
@sql

‘拾’ Oracle创建包含动态sql的存储过程

只能使用动态游标了。


给你个简单例子:

declare
num#number;
recsys_refcursor;
begin
openrecfor'selectcount(*)fromempwhereempno=7788';
fetchrecintonum#;
closerec;
dbms_output.put_line(num#);
end;
/
热点内容
mysql配置访问ip 发布:2025-02-08 16:22:49 浏览:115
体表面积简易算法 发布:2025-02-08 16:18:04 浏览:686
存储器的分级储存是如何实现的 发布:2025-02-08 16:11:27 浏览:193
电脑怎么看路由器密码 发布:2025-02-08 16:10:13 浏览:400
汇编宏编译 发布:2025-02-08 16:08:30 浏览:194
androidlayoutview 发布:2025-02-08 15:45:01 浏览:620
大货车有哪些安全应急配置 发布:2025-02-08 15:44:55 浏览:537
安卓手机下黎明杀机为什么会闪退 发布:2025-02-08 15:38:27 浏览:488
定位算法源码 发布:2025-02-08 15:36:43 浏览:542
上游服务器异常什么意思 发布:2025-02-08 15:15:46 浏览:176