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

oracle存儲過程sql拼接

發布時間: 2023-01-26 14:17:08

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

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

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

3. ORACLE存儲過程的問題: 假設有A表,B表和C表,B表和C表是一樣的欄位,要把B表或者C表的數據插入到A表

授之以魚不如授之以漁把,這類問題的調試都有一個標准方法,就是先把這句拼接的SQL字元串放入到一個定義的變數里,把這個變數返出來,或者DBMS.OUTPUT日誌打出來,看看語句是否有問題,或者標點或者空格都有可能。具體你只要把列印出來的SQL語句單獨執行下,根據錯誤提示就知道錯誤出在那了。然後在回去改拼接SQL語句的地方,如此往復,再復雜的SQL語句拼接也能夠搞定。另外如果是通過游標循環生成的大SQL語句,建議存放在long類型變數中,因為一般的VACHAR2之類的字元類型會不夠長,截斷後面的語句,同樣也會導致語句錯誤

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

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

5. oracle 存儲過程 ,執行拼接sql,給制定參數賦值

execute immediate v_sql into rep_Val;

6. 將oracle寫的存儲過程改成sql server的存儲過程

游標的語法兩邊差不多的,改一下數據類型Varchar2—》varchar,DATE->datetime等等,還有一些符號、時間類型轉換、字元串拼接等函數就好了啊,一點一點調吧。

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

8. ORACLE存儲過程中拼接sql語句 後在EXCUTE的時候總是報錯(詳見下面)

對於這種動態SQL的錯誤,我的建議是把PS_SQL類似這樣的字元變數通過dbms_output.putline('PS_SQL
IS:'||PS_SQL);先在命令行列印出來看看,再去執行列印出來的SQL就知道哪個
引號
有問題。

9. 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||' ; 拼接的過程需要注意校驗參數的合法性,增加存儲過程的容錯性。臨時表使用了會話級,存儲過程執行完,可以通過查詢存儲過程獲取結果。

熱點內容
需要更改哪些防火牆配置 發布:2025-07-18 14:53:23 瀏覽:928
伺服器如何不設置密碼直接進入 發布:2025-07-18 14:48:23 瀏覽:380
eclipse設置增量編譯 發布:2025-07-18 14:43:24 瀏覽:66
訪問virtualbox 發布:2025-07-18 14:43:19 瀏覽:67
怎麼找回建行登錄密碼 發布:2025-07-18 14:39:38 瀏覽:349
如何讓安卓變得像蘋果一樣快 發布:2025-07-18 14:38:05 瀏覽:218
台安源碼 發布:2025-07-18 14:35:32 瀏覽:601
下載種子怎麼是php 發布:2025-07-18 14:35:00 瀏覽:5
linuxtimet 發布:2025-07-18 14:34:46 瀏覽:300
輕客有哪些安全配置 發布:2025-07-18 14:09:22 瀏覽:409