當前位置:首頁 » 存儲配置 » oracle存儲動態sql語句

oracle存儲動態sql語句

發布時間: 2023-05-17 07:47:29

『壹』 oracle動態sql語句執行問題

直接調用就可以了。舉個例子把 B 存儲過程調用A 存儲過程。
PROCEDURE A (p_1 in number,p_2 out number)

is
v_1 number;
begin
V_1:=p_1;
p_2:=v_1;
end A;

(1)如果A 與B同在一個package裡面的話。那麼 B裡面直接可以調用A
PS:如果A,B在同一個Package 中無法調用的話,那麼很可能是A,B在Spec里沒有聲明。一個package包含Spec 和Body,兩層。不能調用很可能沒有聲明。聲明後應該ok!

PROCEDURE B(p_1 in number)
is
v_result number;

begin

v_result =A(p_1);

end B;
其中v_result就是調用A的結果,A的返回值。

(2)如果A與B不在同一個package的話
那麼B在調用A 的時候,需要加上pkg的名字
比如:A 存儲過程在pkg :xxom_test_pkg 中

PROCEDURE B(p_1 in number)
is
v_result number;
begin
v_result = xxom_test_pkg .A(p_1);

end B;

----------------------------------------------------------
以上簡單介紹了存儲過程的調用。
希望對你有幫助

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

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

『叄』 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報錯

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

『伍』 oracle資料庫動態SQL語句問題

是這樣子的:
正常的SQL應該是這樣:
SELECT COUNT(*) FROM USER_TABLES WHERE TABLE_NAME='EMP';
然後游態V_SQL:='';最外層也是有引號的
當表名是變數,但是我們查的時候是需要加上單引號的,銷磨逗如果最外面的單引號的話,則裡面的單引號就需要單引號再加單引號這樣來引用的。
所以,如虧賣果你測試你的V_SQL寫的正常不正常的話,可以用raise_application_error(-20201,V_SQL);查看,因為這樣輸出的是正常的sql的哦。

『陸』 oracle 存儲過程 動態sql語句

procere bulupdate語法上的錯誤

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

  2. sqlstring里那個加號去掉

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

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

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

『玖』 怎樣SQL存儲過程中執行動態SQL語句

1.EXEC的使用
EXEC命令有兩種用法,一種是執行一個
存儲過程
,另一種是執行一個動態的
批處理
。以下所講的都是第二種用法。
下面先使用EXEC演示一個例子,代碼1
DECLARE
@TableName
VARCHAR(50),@Sql
NVARCHAR
(MAX),@OrderID
INT;
SET
@TableName
=
'Orders';
SET
@OrderID
=
10251;
SET
@sql
=
'SELECT
*
FROM
'+QUOTENAME(@TableName)
+'WHERE
OrderID
=
'+
CAST(@OrderID
AS
VARCHAR(10))+'
ORDER
BY
ORDERID
DESC'
EXEC(@sql);
sp_executesql命令在SQL
Server中引入的比EXEC命令晚一些,它主要為重用執行計劃提供更好的支持。
為了和EXEC作一個鮮明的對比,我們看看如果用代碼1的代碼,把EXEC換成sp_executesql,看看是否得到我們所期望的結果
DECLARE
@TableName
VARCHAR(50),@sql
NVARCHAR(MAX),@OrderID
INT
,@sql2
NVARCHAR(MAX);
SET
@TableName
=
'Orders
';
SET
@OrderID
=
10251;
SET
@sql
=
'SELECT
*
FROM
'+QUOTENAME(@TableName)
+
'
WHERE
OrderID
=
'+CAST(@OrderID
AS
VARCHAR(50))
+
'
ORDER
BY
ORDERID
DESC'
EXEC
sp_executesql
@sql

『拾』 Oracle創建包含動態sql的存儲過程

只能使用動態游標了。


給你個簡單例子:

declare
num#number;
recsys_refcursor;
begin
openrecfor'selectcount(*)fromempwhereempno=7788';
fetchrecintonum#;
closerec;
dbms_output.put_line(num#);
end;
/
熱點內容
百度網盤上傳錯誤 發布:2025-02-08 12:56:21 瀏覽:69
安卓手機怎麼解除防抖系統 發布:2025-02-08 12:55:37 瀏覽:390
sql2008sql代理 發布:2025-02-08 12:55:34 瀏覽:50
vs編譯找不到指定項目文件 發布:2025-02-08 12:36:54 瀏覽:243
怎樣用windows伺服器搭建網站 發布:2025-02-08 12:27:38 瀏覽:532
android獲取音樂 發布:2025-02-08 12:26:05 瀏覽:962
存儲的數據可以復制嗎 發布:2025-02-08 12:20:22 瀏覽:852
scraino編程 發布:2025-02-08 11:59:41 瀏覽:266
我的世界伺服器進不去該怎麼辦 發布:2025-02-08 11:47:41 瀏覽:236
linux的telnet 發布:2025-02-08 11:47:36 瀏覽:288