oracle存儲過程列印輸出
『壹』 oracle中怎麼執行帶有輸出參數的存儲過程,在程序中我知道怎麼調用,
1、新建一個存儲過程(Procere)。
『貳』 Oracle 存儲過程和游標的問題,怎麼輸出
既然你只輸出一個表emp的內容的數據,那定義個表類型輸出,比如:
create
procere
my_procere(row_list
out
emp%rowtype)
as
begin
select
*
into
row_list
from
emp;
end;
你那種寫法一般很少吧,代碼精煉,簡單化最好了。
『叄』 Oracle中變數如何輸出
存儲碰胡拍過程直做者接列印Create or replace procere Sel is AA date;beginSelect sysdate into AA from al;dbms_output.put_line(AA);end;變數返回笑羨Create or replace procere Sel (AA out date)isbeginSelect sysdate into AA from al;end;/set serverout on declare v_aa date; begin sel (v_aa); dbms_output.put_line(v_aa); end;
『肆』 oracle中的存儲過程,有什麼作用,以及怎麼在代碼中使用
定義:存儲過程(Stored Procere )是一組為了完成特定功能的sql 語句
集,經編譯後存儲在資料庫中。用戶通過指定存儲過程的名字並給出參數
(如果該存儲過程帶有參數)來執行它。存儲過程是資料庫中的一個重要
對象,任何一個設計良好的資料庫應用程序都應該用到存儲過程。
存儲過程是由流控制和SQL 語句書寫的過程,這個過程經編譯和優化後
存儲在資料庫伺服器中,應用程序使用時只要調用即可。在ORACLE 中,
若干個有聯系的過程可以組合在一起構成程序包。
優點:存儲過程只在創造時進行編譯,以後每次執行存儲過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用存儲過程可提高資料庫執行速度。
2.當對資料庫進行復雜操作時(如對多個表進行Update、Insert、Query、Delete時),可將此復雜操作用存儲過程封裝起來與資料庫提供的事務處理結合一起使用。
3.存儲過程可以重復使用,可減少資料庫開發人員的工作量。
4.安全性高,可設定只有某用戶才具有對指定存儲過程的使用權。
proc = connection.prepareCall("{ call SIM_MEDICARE.P_Isinblacklist(?,?,?,?,?) }");
proc.setString(1, 「」);設置傳入參數
proc.registerOutParameter(4, Types.VARCHAR);注冊傳出參數
proc.execute();執行過程
proc.getString(4)獲取結果
『伍』 在oracle中如何如何顯示輸出
首先在sqlplus中set serverout on 以打開慶做顯示至於譽茄衡輸出,可以用dbms_output若在納和sqlplus中還可以用print
『陸』 oracle中的存儲過程怎麼寫
Oracle存儲過程寫法實例
總結項目中寫的存儲過程例子:
Oracle存儲過程基本語法 存儲過程
1 CREATE OR REPLACE PROCEDURE 存儲過程名
2 IS/AS
3 BEGIN
4 NULL;
5 EXCEIPTION;
6 END;
1、創建存儲過程,後面可用is或者as:
create or replace procere PRO_COMPLAIN_TEMPLATE as
2、定義變數,此處用到了%TYPE和%ROWTYPE,參考 /database/201211/168564.html ,另外定義了一個游標,TEM_INSTANCE TEMPLATE_CUR%ROWTYPE這個類型定義必須要在游標定義之後:
NEED_DO_FOR_ZL INTEGER;
CURRENT_MAX_ID MEMO_TEMPLET.TEMPLET_ID%TYPE;
CURSOR TEMPLATE_CUR IS SELECT TEMPLET_NAME, TEMPLET_CONTENT FROM SYS_COMPLAINT_TEMPLET;
TEM_INSTANCE TEMPLATE_CUR%ROWTYPE;
3、begin開始塊:
begin
4、該插入語句使用了DBLINK,還有使用DBMS_OUTPUT.put_line('列印信息')進行信息輸出:
insert into MEMO_TEMPLET (TEMPLET_ID, TEMPLET_CONTENT, TEMPLET_TYPE, TEMPLET_MEMO) (SELECT * FROM MEMO_TEMPLET@COMPANY);
SELECT COUNT(*) INTO NEED_DO_FOR_ZL FROM SYS_COMPLAINT_TEMPLET;
IF(NEED_DO_FOR_ZL > 0) THEN
DBMS_OUTPUT.put_line('列印信息');
SELECT MAX(TEMPLET_ID)+1 INTO CURRENT_MAX_ID FROM MEMO_TEMPLET;
DBMS_OUTPUT.put_line('MEMO_TEMPLET最大ID' || CURRENT_MAX_ID);
FOR TEM_INSTANCE IN TEMPLATE_CUR LOOP
INSERT INTO MEMO_TEMPLET (TEMPLET_ID, TEMPLET_CONTENT,
TEMPLET_TYPE, TEMPLET_MEMO) VALUES (CURRENT_MAX_ID,
TEM_INSTANCE.TEMPLET_CONTENT, '7', NULL);
CURRENT_MAX_ID := CURRENT_MAX_ID + 1;
DBMS_OUTPUT.put_line(TEM_INSTANCE.TEMPLET_CONTENT);
END LOOP;
END IF;
COMMIT;
www.2cto.com
4、exception塊,使用WHEN OTHERS THEN,其中用raise可顯示錯誤信息:
exception
WHEN OTHERS THEN
DBMS_OUTPUT.put_line('sqlcode : ' ||sqlcode);
raise;
ROLLBACK;
IF TEMPLATE_CUR%ISOPEN THEN
CLOSE TEMPLATE_CUR;
END IF;
DBMS_OUTPUT.put_line('列印信息');
end;
註:關於游標的使用,如果像本例中使用for循環去遍歷游標的話則不需要顯式的去用open/close
cursor打開和關閉游標,此處會自己處理,如果使用fetch
into的話就需要顯式開關游標,另外任意執行一個update操作,用隱式游標sql的屬性%found,%notfound,%rowcount,%isopen觀察update語句的執行情況,也可以使用來判斷游標狀態,如IF
TEMPLATE_CUR%ISOPEN THEN。
『柒』 oracle寫一個存儲過程輸出一個菱形
create or replace procere print(hi int) is
begin
for i in 1 .. hi loop
for j in 1 .. hi * 2 loop
if j = hi - i + 1 or j = hi + i - 1 then
dbms_output.put('*');
else
dbms_output.put(' ');
end if;
end loop;
dbms_output.put_line('');
end loop;
for i in 1 .. hi loop
for j in 1 .. hi * 2 loop
if j = i or j = hi * 2 - i then
dbms_output.put('此搏*');
else
dbms_output.put(' ');
end if;
end loop;
dbms_output.put_line('');
end loop;
end;
以上為創建存儲過程語句。
參數hi 為菱形的半高。
創建完成以後,在菱形窗口咐扒判
set serveroutput on
exec print(10)即可打衡改印。
『捌』 如何將ORACLE存儲過程中SQL的結果集列印出來,並且按照一定的格式封裝到一個字元串中呢
這就用上了遞歸的思想,思路如下,沒有你的數據如果有問題你調試下
V_SQL='select * from (
select REPLACE(SYS_CONNECT_BY_PATH(a,','),',') , LEVEL from (
SELECT OBJECT_ID || ''|''||
OBJECT_NAME || ''|''||
PHASE_ID || ''|''||
BUSI_TYPE || ''|''||
BUSI_NAME || ''|''||
BUSI_SUBCLASS_CODE || ''|''||
BUSI_SUBCLASS_NAME || ''|''||
BUSI_CLASSIFI_CODE || ''|''||
BUSI_CLASSIFI_NAME || ''|''||
BRAND_TYPE || ''|''||
CODE_NAME || ''|''||
RULER_OPTI || ''|''||
RULER_CENT || ''|''||
DONE_DATE || ''|''||'';'' a
FROM KH.KF_IVR_BUSI_CALCULATE S WHERE S.PHASE_ID=' || V_MONTH ||
' AND S.OBJECT_ID=' || V_OP_ID || ')
START WITH ROWNUM =1
CONNECT BY PRIOR rn +1= rn ORDER BY LEVEL DESC )
WHERE ROWNUM < 2 ';
『玖』 oracle存儲過程如何輸出信息
可用DBMS_OUTPUT.PUT_LINE()對存儲過程的進行輸出。
編寫存儲過程:
create or replace procere test_pro(in_num number)
as
M number;
begin
M := in_num;
if 0 < M then
dbms_output.put_line('輸出SQL語句1');
elsif M < 3 then
dbms_output.put_line('輸出SQL語句2');
else
dbms_output.put_line('nothing');
end if;
end;
(9)oracle存儲過程列印輸出擴展閱讀;
存儲在資料庫的數據字典中,存儲在當前的應用中安全性由資料庫提供安全保證,必須通過授權才能使用存儲子程序,安全性靠應用程序來保證,如果能執行應用程序,就能執行該子程序。模式描述IN參數用來從調用環境中向存儲過程傳遞值,不能給IN參數賦值,給此參數傳遞的值可以是常量、有值的變數、表達式等。