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

oracle動態sql存儲過程

發布時間: 2022-05-21 16:25:09

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

2. oracle使用存儲過程執行sql怎麼寫

用 execute immediate mSql;來執行,也就是Oracle的動態 sql 語句

3. oracle 存儲過程中動態sql語句

v_sql :=' update aj set recount=(select num_rows from dba_tables where table_name = ' || v_tablename || ') where tablename=' || v_tablename

4. 如何在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

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

6. oracle sql怎麼創建存儲過程

import java.sql. * ;
public class ProcereNoArgs
{
public static void main(String args[]) throws Exception
{
// 載入Oracle驅動
DriverManager.registerDriver( new oracle.jdbc.driver.OracleDriver());
// 獲得Oracle資料庫連接
Connection conn = DriverManager.getConnection( " jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL", sUsr, sPwd " );
// 創建存儲過程的對象
CallableStatement c = conn.divpareCall( " {call pro1(?)} " );
// 給Oracle存儲過程的參數設置值 ,將第一個參數的值設置成188
c.setInt( 1 , 188 );
// 執行Oracle存儲過程
c.execute();
conn.close();
}
}

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

procere bulupdate語法上的錯誤

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

  2. sqlstring里那個加號去掉

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

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

只能使用動態游標了。


給你個簡單例子:

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

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

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

熱點內容
黃鱔門視頻種子ftp 發布:2024-11-15 02:43:50 瀏覽:35
資料庫簽單 發布:2024-11-15 02:43:05 瀏覽:367
openfalcon源碼 發布:2024-11-15 02:32:45 瀏覽:18
長江存儲總監 發布:2024-11-15 02:28:29 瀏覽:116
資料庫添加一列 發布:2024-11-15 02:24:09 瀏覽:979
android視頻讀取 發布:2024-11-15 02:19:43 瀏覽:258
hyperv安裝linux 發布:2024-11-15 02:05:37 瀏覽:303
小螞蟻電動汽車哪個配置好 發布:2024-11-15 01:53:18 瀏覽:25
c語言聯合體 發布:2024-11-15 01:52:36 瀏覽:109
雲伺服器下載軟體提示 發布:2024-11-15 01:51:55 瀏覽:756