當前位置:首頁 » 存儲配置 » oracle存儲過程拼接sql

oracle存儲過程拼接sql

發布時間: 2022-08-26 23:52:43

㈠ oracle存儲過程條件查詢

--先在包裡面定義一個指針類型mycur供後續存儲過程使用
create or replace package PKG_STUDENT_OPEAR is
type mycur is ref cursor;
end PKG_STUDENT_OPEAR;

--定義存儲過程,裡面根據參數拼接sql語句,最終得到結果
create or replace procere query_temp(in_a in varchar2,
in_b in varchar2,
in_c in varchar2,
in_d in varchar2,
rescur out PKG_STUDENT_OPEAR.mycur) is
str_sql varchar2(500);
begin
str_sql := 'select tt.* from table tt where 1=1 ';
if in_a is not null or nvl(in_a, 'null') <> 'null' then
str_sql := str_sql || ' and tt.a = ''' || in_a || '''';
end if;
if in_b is not null or nvl(in_b, 'null') <> 'null' then
str_sql := str_sql || ' and tt.b = ''' || in_b || '''';
end if;
if in_c is not null or nvl(in_c, 'null') <> 'null' then
str_sql := str_sql || ' and tt.c = ''' || in_c || '''';
end if;
if in_d is not null or nvl(in_d, 'null') <> 'null' then
str_sql := str_sql || ' and tt.d = ''' || in_d || '''';
end if;
open rescur for str_sql;
end query_temp;

㈡ oracle 利用存儲過程循環執行sql語句

你的需求不需要使用存儲過程的,一個簡單的聚合函數就能實現吧。

用存儲過程反而麻煩,你想用的話,可以學習一下pl/sql相關的內容。

㈢ 關於oracle存儲過程中的sql拼接,大神進!!!

procere proc_test(
in_id in varchar2,
out_sum out varchar2
) as
begin
execute immediate 'select count(*) from table_name '||in_id into out_sum;
end;
/
sqlplus里調用時:
var out_sum varchar2(10)
exec package_name.proc_test('where id=''XXX'' or 1=1',:out_sum)
print out_sum

㈣ oracle存儲過程中如何執行動態SQL語句 詳細�0�3

有時需要在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語句 詳細

有時需要在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語句並返回結果

建議你用 instr函數,v_sql條件改為
where instr(p_jbm,t.jbm)>0試試吧。

㈦ 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>

㈧ 在oracle 存儲過程中,動態創建臨時表後,執行一段很長的insert 語句,應該怎麼弄呢

通過拼接sql語句賦給變數如v_sql
然後再用execute immediate v_sql執行即可實現。

java調用oracle存儲過程 關於sql裡面in函數參數的問題

調用存儲過程是java 把組合起來的字元串傳到資料庫後台操作,如果你in ( pkStagesPersonArray),傳到資料庫後台還是 in ( pkStagesPersonArray) 而非你想要的 in('1330251','1336140' )所以你應該把pkStagesPersonArray 裡面的內容轉換成 '1330251','1336140' 再拼接起來

熱點內容
android開發xml 發布:2024-12-22 10:00:20 瀏覽:63
sql伺服器名稱什麼時候能寫ip 發布:2024-12-22 09:53:19 瀏覽:128
域控制伺服器怎麼設置ip 發布:2024-12-22 09:43:23 瀏覽:882
csvreaderpython 發布:2024-12-22 09:43:13 瀏覽:768
linux更改用戶 發布:2024-12-22 09:35:19 瀏覽:505
信息的編程加工 發布:2024-12-22 09:33:48 瀏覽:116
移動辦公專家伺服器地址寫什麼 發布:2024-12-22 09:25:13 瀏覽:147
編程CBA 發布:2024-12-22 09:10:11 瀏覽:288
糖豆上傳視頻 發布:2024-12-22 09:09:24 瀏覽:856
canvas壓縮上傳圖片 發布:2024-12-22 08:53:47 瀏覽:189