當前位置:首頁 » 編程語言 » oracle動態sql查詢

oracle動態sql查詢

發布時間: 2022-12-17 01:33:34

『壹』 oracle 動態sql是否可以用子查詢呢請幫忙解答!

可以,例
--創建TTT表
CREATE TABLE TTT AS SELECT LEVEL ID FROM DUAL CONNECT BY LEVEL<100;
--創建SUB_TTT表
CREATE TABLE SUB_TTT AS SELECT 1 ID,'A' DOC FROM DUAL UNION SELECT 2 ID,'B' DOC FROM DUAL UNION SELECT 3 ID,'C' DOC FROM DUAL;

--在SUB_TTT表中計算ID小於指定值的個數,並且這些ID要在TTT表中出現
DECLARE
CNT NUMBER := 0;
SQL_STR VARCHAR2(100) := 'SELECT COUNT(1) CC FROM SUB_TTT A WHERE EXISTS(SELECT 1 FROM TTT B WHERE A.ID=B.ID AND B.ID<:ID)';
BEGIN
EXECUTE IMMEDIATE SQL_STR
INTO CNT
USING 5;
DBMS_OUTPUT.PUT_LINE(CNT);
END;

『貳』 如何在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

『叄』 Oracle sql語句查詢動態日期區間里的數據

select * from tb
where scbj=0 and sj between sysdate-14 and sysdate

『肆』 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是什麼意思

個人理解動態sql就是在sql語句中存在變數,根據變數的不同組合成各種條件的sql語句。比如一個循環裡面有一個查詢,這個循環的內容應用在這個查詢中,那麼這個查詢一定會有一個變數,而這個電郵變數的sql語句,就叫做動態sql。

『陸』 oracle的動態查詢和sql server的動態查詢有什麼區別

DECLARE

strsqlVARCHAR2(100):=『SELECT*FROMempWHEREempno=7788『;

emp_recordemp%ROWTYPE;

BEGIN

EXECUTEIMMEDIATEstrsqlINTOemp_record;

dbms_output.put_line(姓名:||emp_record.ename||,崗位:||emp_record.job);

END;


以上是Oracle的動態sql語法




而SQLServer一般使用的是sp_executesql 函數,它可以執行動態的修改,查詢,刪除功能。

Sp_executesql:執行可以多次重復使用或動態生成的Transact-SQL語句或批處理。Transact-SQL語句或批處理可以包含嵌入參數。
語法:
sp_executesql[@statement=]statement
[
{,[@params=]N'@parameter_namedata_type[OUT|OUTPUT][,...n]'}
{,[@param1=]'value1'[,...n]}
]

『柒』 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

熱點內容
取票人的密碼是什麼 發布:2024-05-20 08:21:43 瀏覽:962
天貓帳號密碼應輸入什麼 發布:2024-05-20 08:16:26 瀏覽:272
plsql異常處理 發布:2024-05-20 07:54:47 瀏覽:542
dreamweaver上傳網頁 發布:2024-05-20 07:51:24 瀏覽:462
拍攝車的分鏡頭腳本 發布:2024-05-20 07:50:15 瀏覽:137
mg名爵最高配置是哪個 發布:2024-05-20 07:45:11 瀏覽:376
輔助官網源碼 發布:2024-05-20 07:31:48 瀏覽:866
androidbutton的屬性 發布:2024-05-20 07:18:58 瀏覽:637
查找重復欄位的sql 發布:2024-05-20 07:18:17 瀏覽:303
我的世界創造房子伺服器 發布:2024-05-20 06:48:36 瀏覽:818