當前位置:首頁 » 存儲配置 » oracle存儲過程動態sql

oracle存儲過程動態sql

發布時間: 2022-04-06 23:56:44

A. oracle 存儲過程執行動態sql 返回結果給游標,外部程序獲得dataset結果集。

你這樣寫就可以了,ORACLE存儲過程不需要返回值,只要參數是out就代表為輸出參數了,你給它傳一個游標進去,執行完,這個游標的值就是你查詢的值了。

B. 如何在oracle存儲過程中執行動態sql語句

v_sql := ' select / ……『 ;
execute immediate v_sql ;

C. oracle 存儲過程 動態sql語句

procere bulupdate語法上的錯誤

  1. 參數定義時的數據類型不能指定長度,varchar2(200)改為varchar2

  2. sqlstring里那個加號去掉

  3. open cursor 時,cursor名應該是定義的過程參數cur

D. 如何在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;
procere
test_proc
(v_table
varchar2,t_cur
out
cur_typ);
end;
/
create
or
replace
package
body
test_pkg
is
procere
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

E. Oracle創建包含動態sql的存儲過程

只能使用動態游標了。


給你個簡單例子:

declare
num#number;
recsys_refcursor;
begin
openrecfor'selectcount(*)fromempwhereempno=7788';
fetchrecintonum#;
closerec;
dbms_output.put_line(num#);
end;
/

F. 如何在oracle存儲過程中執行動態sql語句

給你一個案例對這些,使用execute immediate就可以了,存儲過程和語句塊也是一樣的,自己改一改,沒區別的。

語法格式
EXECUTEIMMEDIATEdynamic_string
[INTO{define_variable[,define_variable]...|record}]
[USING[IN|OUT|INOUT]bind_argument[,[IN|OUT|INOUT]bind_argument]...]
[{RETURNING|RETURN}INTObind_argument[,bind_argument]...];

1,操作DDL語句,這也是動態SQL的常用操作之一
如下所示使用動態SQL創建資料庫表:
DECLARE
l_dync_sqlVARCHAR2(100);
BEGIN
l_dync_sql:='CREATETABLEcux_dync_test(idNUMBER,creation_dateDATE)';
EXECUTEIMMEDIATEl_dync_sql;
END;
2,操作DML語句,使用USING子句可以按照順序將輸入的值綁定到變數,如果動態SQL只有單行輸出的話可以直接使用INTO來接收輸出值,如下所示。
DECLARE
l_dync_sqlVARCHAR2(100);
l_person_nameVARCHAR2(140);
l_ageNUMBER;
BEGIN
l_dync_sql:='SELECTperson_name,ageFROMcux_cursor_testWHEREperson_id=:1';
EXECUTEIMMEDIATEl_dync_sql
INTOl_person_name,l_age--使用into語句接手動態SQL的輸出,如果輸出多行則出錯
USING101;--給綁定變數賦值
dbms_output.put_line('PersonName:'||l_person_name);
dbms_output.put_line('Age:'||l_age);
END;

G. Oracle [存儲過程] 執行動態拼接SQL語句並返回結果

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

H. oracle 存儲過程動態查詢

declare
v_tablename user_tables.table_name%type;
v_table user_tables%rowtype;
v_count number(10) := 0;
v_name varchar2(40);
v_sql varchar2(100) ;
cursor c is
select * from user_tables;
begin
open c ;
loop
fetch c
into v_table;
exit when c%notfound;
v_count := 0;
v_sql := ' select count(*) into v_count from ';
v_tablename := v_table.table_name;
v_sql := v_sql ||v_tablename ;
-- execute immediate v_sql;
dbms_output.put_line(v_count ||'----'|| v_tablename);
end loop;
close c;
end;

I. 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要放在外面,參數也要在外面

J. 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;

熱點內容
安卓快手圖片怎麼弄 發布:2024-11-20 21:10:21 瀏覽:80
linuxtomcat內存 發布:2024-11-20 20:56:28 瀏覽:775
小米5s存儲卡 發布:2024-11-20 20:48:48 瀏覽:14
互聯網宣傳片腳本 發布:2024-11-20 20:47:09 瀏覽:994
穿越火線伺服器ip地址和埠 發布:2024-11-20 19:59:43 瀏覽:701
李鴻章環球訪問 發布:2024-11-20 19:54:07 瀏覽:197
方舟聯機伺服器怎麼發育 發布:2024-11-20 19:53:15 瀏覽:937
蘋果手機怎麼設計密碼 發布:2024-11-20 19:53:13 瀏覽:181
一個伺服器可以搭建多少游戲 發布:2024-11-20 19:43:56 瀏覽:971
哈希函數c語言 發布:2024-11-20 19:43:03 瀏覽:745