最近在對資料庫進行從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 ...