当前位置:首页 » 存储配置 » oracle存储过程sql拼接

oracle存储过程sql拼接

发布时间: 2023-01-26 14:17:08

1. java调用oracle存储过程 关于sql里面in函数参数的问题

调用存储过程是java 把组合起来的字符串传到数据库后台操作,如果你in ( pkStagesPersonArray),传到数据库后台还是 in ( pkStagesPersonArray) 而非你想要的 in('1330251','1336140' )所以你应该把pkStagesPersonArray 里面的内容转换成 '1330251','1336140' 再拼接起来

2. 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

3. ORACLE存储过程的问题: 假设有A表,B表和C表,B表和C表是一样的字段,要把B表或者C表的数据插入到A表

授之以鱼不如授之以渔把,这类问题的调试都有一个标准方法,就是先把这句拼接的SQL字符串放入到一个定义的变量里,把这个变量返出来,或者DBMS.OUTPUT日志打出来,看看语句是否有问题,或者标点或者空格都有可能。具体你只要把打印出来的SQL语句单独执行下,根据错误提示就知道错误出在那了。然后在回去改拼接SQL语句的地方,如此往复,再复杂的SQL语句拼接也能够搞定。另外如果是通过游标循环生成的大SQL语句,建议存放在long类型变量中,因为一般的VACHAR2之类的字符类型会不够长,截断后面的语句,同样也会导致语句错误

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

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

5. oracle 存储过程 ,执行拼接sql,给制定参数赋值

execute immediate v_sql into rep_Val;

6. 将oracle写的存储过程改成sql server的存储过程

游标的语法两边差不多的,改一下数据类型Varchar2—》varchar,DATE->datetime等等,还有一些符号、时间类型转换、字符串拼接等函数就好了啊,一点一点调吧。

7. Oracle 怎么把存储过程传过来的参数拼接成

给你一个 传递参数的例子

SQL> CREATE OR REPLACE PROCEDURE HelloWorld2 (
2 p_user_name IN VARCHAR2,
3 p_out_val OUT VARCHAR2,
4 p_inout_val IN OUT VARCHAR2
5 ) AS
6 BEGIN
7 dbms_output.put_line('Hello ' || p_user_name || p_inout_val || '!');
8 p_out_val := 'A';
9 p_inout_val := 'B';
10 END HelloWorld2;
11 /

Procere created.

SQL> DECLARE
2 p_outval VARCHAR2(10);
3 p_inoutval VARCHAR2(10) := '~Hi~';
4 BEGIN
5 HelloWorld2('Edward', p_outval, p_inoutval);
6
7 dbms_output.put_line('p_outval=' || p_outval);
8 dbms_output.put_line('p_inoutval=' || p_inoutval);
9 END;
10 /
Hello Edward~Hi~!
p_outval=A
p_inoutval=B

PL/SQL procere successfully completed.

SQL>

8. ORACLE存储过程中拼接sql语句 后在EXCUTE的时候总是报错(详见下面)

对于这种动态SQL的错误,我的建议是把PS_SQL类似这样的字符变量通过dbms_output.putline('PS_SQL
IS:'||PS_SQL);先在命令行打印出来看看,再去执行打印出来的SQL就知道哪个
引号
有问题。

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

热点内容
网吧用的服务器是什么服务器 发布:2025-07-18 18:40:15 浏览:937
ftp命令使用 发布:2025-07-18 18:13:05 浏览:46
办税密码是什么 发布:2025-07-18 18:12:32 浏览:488
linuxftp文件下载 发布:2025-07-18 18:12:30 浏览:942
互联网网站服务器搭建 发布:2025-07-18 18:01:06 浏览:479
安卓手机怎么辫真伪 发布:2025-07-18 17:13:14 浏览:187
java后台json 发布:2025-07-18 17:12:21 浏览:681
手机游戏配置主要看哪些 发布:2025-07-18 17:00:47 浏览:149
微课源码 发布:2025-07-18 16:34:44 浏览:1002
压缩长抱枕 发布:2025-07-18 16:13:38 浏览:506