執行oracle函式的四種方法

2021-08-01 16:15:04 字數 1379 閱讀 3254

最近在對資料庫進行從sqlserver改造到oracle過程中遇到了乙個頭疼的問題,sqlserver

可以返回乙個結構化的資料集,oracle函式不行,要執行函式(含返回值),函式過程中將語句插進事務性臨時表裡再讀取臨時表

找到如下資料,執行oracle函式的方法:

1.在定義函式時:如果有引數,則引數可有型別但是不加長度。

2.在執行函式: var/variable var_name var_type(如果資料型別是number則沒有長度,如果資料型別是varchar2,則可以寫長度)

call(此處不能用exec) 函式名(引數) into :var_name;

舉例:sql>var dd varchar2

sql>call get_sal(7788) into :dd;

執行oracle函式的四種方法:

首先,建立函式fun_stu:

create or replace function fun_stu(iname varchar2) return varchar2 is

r varchar2(20);

begin

select s.value into r from student s where s.name =iname;

return (r);

end;

1.方法一

輸入以下語句

sql> variable a varchar2(20)

sql> begin

:a:=fun_stu('ba');

end;

輸出結果:

pl/sql procedure successfully completedaa

輸出變數的值

sql> print aaa

2.方法二

輸入以下語句

sql> variable a varchar2(20)

sql> call fun_stu('ba') into :a;

輸出結果

method calledaa

輸出變數值

sql> print aa a

3.方法三

輸入以下語句

sql> variable a varchar2(20)

sql> execute :a:=fun_stu('ba');

輸出結果

pl/sql procedure successfully completedac

輸出變數值

sql> print aac

4.方法四

使用sql語句呼叫

select   fun_stu('ba') from dual;

輸出結果

a附加問題:  plsql 命令視窗執行語句按回車有效,執行無效?

Promise非同步函式順序執行的四種方法

前幾天遇到乙個程式設計題,要求控制promise順序執行,今天總結了一下這個至少有好四種方法都可以實現,包括promise巢狀,通過乙個promise串起來,generator,async實現,以下逐一介紹。原題目如下 實現mergepromise函式,把傳進去的陣列順序先後執行,並且把返回的資料先...

Promise非同步函式順序執行的四種方法

前幾天遇到乙個程式設計題,要求控制promise順序執行,今天總結了一下這個至少有好四種方法都可以實現,包括promise巢狀,通過乙個promise串起來,generator,async實現,以下逐一介紹。原題目如下 實現mergepromise函式,把傳進去的陣列順序先後執行,並且把返回的資料先...

Shell指令碼執行的四種方法

1 bash 或sh 指令碼的相對路徑或絕對路徑 xf xuexi cat a.sh bin bash echo hello world xf xuexi bash a.sh hello world xf xuexi which bash usr bin bash xf xuexi sh a.sh ...