oracle存儲過程is和as
1. oracle存儲過程中的關鍵字is、as究竟有什麼區別呀
1、單獨的FUNCTION, PROCEDURE 習慣用AS,PACKAGE 中的FUNCTION, PROCEDURE 用IS
2、
create [or replace] procere <過程名>
(
<參數1> [方式1] <數據類型1>,
<參數2> [方式2] <數據類型2>
)
is|as
PS/sql過程體;
單獨的這么看is as 也沒區別
2. oracle 存儲過程 as 和is 區別
第一個問題:is和as是可以互用的,用哪個都沒關系的
第二個問題:在外面
第三個問題:過程中沒有declare關鍵字,declare用在語句塊中
第四個問題:估計你看到的是做游標定義的東東,抑或者直接就一句sql。
3. Oracle存儲過程的語法分析
ORREPLACE是一個可選的關鍵字,建議用戶使用此關鍵字。如果過程已經存在,該關鍵字將重新創建過程,這樣就不必刪除和重新創建過程。關鍵字IS和AS均可,它們本身沒有區別。IS後面是一個完整的PL/SQL塊,可以定義局部變數,但不能以DECLARE開始。局部變數在過程內部存放值。形式參數可以有三種模式:IN、OUT、INOUT。如果沒有為形式參數指定模式,那麼默認的模式是IN。IN表示輸入參數OUT表示輸出參數
HelloWorld!創建第一個存儲過程HelloWorldSQL>_output.put_line('helloworld');end;註:需要在存儲過程輸入完成後回車,下一行輸入」/」回車,才會創建成功。當提示Procerecreated表示存儲過程創建成功。調用HelloWorld!執行SQL>setserveroutputon;SQL>exec[ute]helloworld;顯示如下結果helloworldPL/
4. oracle存儲過程
創建存儲過程
createprocerep_getday
(v_yearvarchar2,
v_monthvarchar2)
as
v_datevarchar2(10);
cursorcur_dateis
withtas
(selectrownum-1rnfromalconnectbyrownum<=32)
selectto_char(to_date(v_year||v_month,'yyyymm')+rn,'yyyy-mm-dd')fromtwhereto_char(to_date(v_year||v_month,'yyyymm')+rn,'yyyymm')=v_year||v_month;
begin
opencur_date;
loop
fetchcur_dateintov_date;
exitwhencur_date%notfound;
dbms_output.put_line(v_date);
endloop;
end;
執行
begin
p_getday('2012','11');
end;
結果
5. ORACLE中如何為存儲過程傳遞參數
第一種:只讀。參數是只讀的,不能修改,即調用時傳遞進來的是常量,或者變數(但變數不能在存儲過程中修改)。通常select及DML類型的存儲過程傳遞的是in類型的參數。
第二種:只寫。忽略調用語句傳遞的任何參數,並在函數(過程)內部給這些參數賦值,因此是只寫的。(這種情況是在函數或過程內部給參數重新賦值,但重新賦值後的參數是無法被外部調用的(好像游標類型的參數除外))
CREATE OR REPLACE PROCEDURE "SCOTT"."SWAP" (firstValue out
number, secondValue out number) is
temp number;
begin
temp := firstValue;
firstValue := secondValue;
secondValue := temp;
end swap;
外部調用:
set serveroutput on;
declare
firstVal number;
secondVal number;
begin
firstVal := 10;
secondVal := 20;
scott.swap(firstVal,secondVal);
dbms_output.put_line('first is ' || firstVal);
dbms_output.put_line('second is ' || secondVal);
end;
無法在外部訪問到firstValue與secondValue的值。此時列印出的結果為:
first is
second is
第三種:讀或寫。這可以完全控制參數,讀取傳遞的參數的值。可以再函數(過程)內部修改參數的值,在退出函數(過程)後,這些參數被賦給在函數內部寫入的值,這樣就可以返回多個值。(即入口參數寫入值後,可以傳遞到函數(過程)的外部,供外部調用的時候使用)
ps:函數中的返回值為如下幾種:
char; varchar2; number; integer; date; boolean; table; record
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.
6. 請教各位:Oracle中,存儲過程里as 什麼意思 還是取別名嗎那麼NULL AS PER_ABE 是什麼意思
不知道您全部的語句是什麼,如果單看這個,那麼就是一個固定值的列,這個固定值就是空(NULL),這個列的別名是PER_ABE
例如:SELECT NULL AS NULLCOLUMN FROM DUAL,其實就是選了一個定值,而這個定值是空。AS後邊是把這個定值指定一個列名。
7. oracle存儲過程到底是is還是as啊
沒什麼區別,一樣的,都可以用~~
8. 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;
(8)oracle存儲過程is和as擴展閱讀;
存儲在資料庫的數據字典中,存儲在當前的應用中安全性由資料庫提供安全保證,必須通過授權才能使用存儲子程序,安全性靠應用程序來保證,如果能執行應用程序,就能執行該子程序。模式描述IN參數用來從調用環境中向存儲過程傳遞值,不能給IN參數賦值,給此參數傳遞的值可以是常量、有值的變數、表達式等。
9. 創建存儲過程is和as有什麼區別
is 用來判斷類型 如: if(val is String){.....}
as 作為/當做 的意思吧,我敘述不清,給你個例子吧:
function xx(e:Event):void{
var ss:Loader = e.target as Loader; // 讓SS共享調用XX事件的對象的信息;
..}
10. oracle的存儲過程is和as什麼區別
使用過vba嗎??
存儲過程里的procere 相當於 sub 無返回值
存儲過程里的function 相當於 Function 必須有回值