vb調用oracle存儲過程
Ⅰ 我在Oracle里寫了個存儲過程。在程序里調用時為什麼找不到OracleType
估計你存儲過程中沒有定義sex及它的類型,要不就是你sex 類型定義錯誤 不屬於oracle數據類型
你可以重新設置下它的類型用個varchar(4)
Ⅱ oracle存儲過程里調用存儲過程
存儲過程里直接新起一行寫b(c,d);就可以,不在存儲過程中單獨執行時要call b(c,d);
Ⅲ 調用oracle存儲過程問題,exec和call的區別
你這種列印就不能輸出了,應該用傳遞參數的方式,將返回錯誤信息,然後將錯誤信息顯出出來或者像JS一樣 彈出來
Ⅳ VFP中調用Oracle的存儲過程
VFP由於其通俗 易用 深受廣大開發人員的歡迎 但其安全性與穩定性卻不十分完善 而Oracle在此方面的優點是有口皆碑的 兩者結合 能開發出高效 安全和穩定的應用系統 有關在VFP中調用Oracle存儲過程方法的資料較少 下面就此舉一簡單例子 希望起到拋磚引玉的作用 此方法適用於用VFP作前端開發工具 Oracle作後端資料庫的C/S開發方法 在Oracle端 建有如下表和存儲過程 表gzb如下 sql〉select * from gzb; IDGZ 存儲過程如下 create or replace procere p_update—gzb (p—id in number p—gz in number) as begin update gzb set gz=p—gz where id=p—id; mit; end; 在前端(VFP端) 假設已建立好與Oracle的鏈接′vfplink′(具體步驟可以參閱VFP的幫助文檔) 打開鏈接 nhand=sqlconnect(′vfplink′) &&nhand為返回的鏈接句柄 調用Oracle的存儲過程p—update—gzb: 此存儲過程有兩個參數 分別是id與gz 我們設要更新id為 的員工的gz為 則可以執行 sqlexec(nhand ″{call p—update—gzb( )}″) 如果執行成功 則返回 失敗則返回- 我們可以執行以下命令驗證存儲過程是否成功執行了 sqlexec(nhand ′select * from gzb′) brow 結果是 IDGZ 可見 Oracle的存儲過程p—update—gzb已經成功執行了 最後 別忘了斷開連接 disconnect(nhand) 以上例子在VFP Oracle 環境下運行通過 lishixin/Article/program/Oracle/201311/16667
Ⅳ oracle中,一個存儲過程怎麼調用另一個存儲過程這兩個存儲過程都帶有各自的參數。直接調用似乎不行。
已經有人回答的很專業了!
原則就是:你要調用哪個存儲過程,就要為該存儲過程傳入它需要的參數
它定義的幾個,你就傳入幾個
當然參數的類型要對應上。
還有就是如果一個存儲過程中定義了out類型的參數,當你在調用它的時候,這個out類型的參數也要參入,看它定義的是什麼類型的out參數。然後定義一個該類型的變數,傳入進去,用於接收存儲過程返回的值。然後用這個值,去做下面的邏輯。
Ⅵ oracle procere存儲過程
OR REPLACE PROCEDURE 存儲過程名字( 參數1 IN NUMBER, 參數2 IN NUMBER ) IS/AS變數1 INTEGER :=0;變數2 DATE;BEGIN.END 存儲過程名字2、SELECT INTO STATEMENT
將select查詢的結果存入到變數中,可以同時將多個列(欄位)存儲到多個變數中,必須有一條記錄,否則拋出異常(如果沒有記錄,拋出NO_DATA_FOUND)
例子:
BEGIN SELECT col1,col2 into 變數1,變數2 FROM typestruct where xxx; EXCEPTION WHEN NO_DATA_FOUND THEN ROLLBACK; RAISE; END;3、IF判斷
IF 條件1 THEN Do Someting ELSIF 條件2 THEN Do Someting ELSIF 條件3 THEN Do Someting ELSE Do SometingEND IF;4、while循環
WHILE V_TEST=1 LOOP BEGIN XXXX END; END LOOP; 5、變數賦值
V_TEST := 123; 6、用for in使用cursor(游標)
. IS CURSOR cur IS SELECT * FROM xxx; BEGIN FOR cur_result in cur LOOP BEGIN V_SUM :=cur_result.列名1+cur_result.列名2 END; END LOOP; END; 7、用pl/sql developer debug
連接資料庫後建立一個Test Window
在窗口輸入調用SP的代碼,F9開始Debug,CTRL+N單步調試
注意事項:
1)存儲過程參數不帶取值范圍,in表示傳入,out表示輸出;
2)變數可帶取值范圍,後面接分號;
3)在判斷語句前最好先用count(*)函數判斷是否存在該條操作記錄
4)用select.into.給變數賦值
5)在代碼中拋出異常用RAISE;通常的用法:
EXCEPTION WHEN OTHERS THEN ROLLBACK; RAISE;/*異常分很多類,如NO_DATA_FOUND。OTHERS處本應該寫異常名稱,如果不想把異常分得那麼細,可以籠統一點用OTHERS來捕獲,即所有異常均用OTHERS來捕獲。WHEN OTHERS THEN 表示是其它異常。RAISE表示拋出異常,讓User可以看到。*/
6)AS/IS的區別
在試圖(VIEW)中只能用AS不能用IS
在游標(CURSOR)中只能用IS不能用AS
7)輸出變數賦值有兩種,一種是直接:=,還有一種就是SELECT INTO
8)顯示調試信息
a.存儲過程中在必要的位置添加
DBMS_OUTPUT.put_line(『HI『);
b.打開DBMS_OUTPUT
show serveroutput;set serveroutput on;
9)刪除PROCEDURE
DROP PROCEDURE procere_name;
oracle procere存儲過程