关于oracle 函数,解释变量的使用和调用,不是很明白,求解释~

v_num,v_sum 尤其是这两个变量怎么来的啊
函数
CREATE OR REPLACE
FUNCTION get_salary(
Dept_no NUMBER,
Emp_count OUT NUMBER)
RETURN NUMBER 
IS
V_sum NUMBER;
BEGIN
SELECT SUM(SALARY), count(*) INTO V_sum, emp_count
FROM EMPLOYEES WHERE DEPARTMENT_ID=dept_no;
RETURN v_sum;
EXCEPTION
WHEN NO_DATA_FOUND THEN 
DBMS_OUTPUT.PUT_LINE('你需要的数据不存在!');
WHEN OTHERS THEN 
DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM);
END get_salary;
调用
DECLARE
V_num NUMBER;
V_sum NUMBER;
BEGIN
V_sum :=get_salary(10, v_num);
DBMS_OUTPUT.PUT_LINE('部门号为:10的工资总和:'||v_sum||',人数为:'||v_num);
END;

交互式爱情
浏览 445回答 3
3回答

RISEBY

CREATE OR REPLACEFUNCTION get_salary(//函数Dept_no NUMBER,//输入参数Emp_count OUT NUMBER)//输出参数RETURN NUMBER //返回参数ISV_sum NUMBER;//这是声明函数的局部变量BEGINSELECT SUM(SALARY), count(*) INTO V_sum, emp_count//这里用到形参,emp_count是output类型的参数,会返回FROM EMPLOYEES WHERE DEPARTMENT_ID=dept_no;RETURN v_sum;//返回v_sum的值EXCEPTIONWHEN NO_DATA_FOUND THENDBMS_OUTPUT.PUT_LINE('你需要的数据不存在!');WHEN OTHERS THENDBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM);END get_salary;调用DECLARE//这里是调用时声明变量V_num NUMBER;V_sum NUMBER;BEGINV_sum :=get_salary(10, v_num);//v_num,v_sum这两个变量调用函数得到值,v_num是emp_count得到的值,v_sum是函数里return的v_sum的值DBMS_OUTPUT.PUT_LINE('部门号为:10的工资总和:'||v_sum||',人数为:'||v_num);END;

繁星淼淼

declare 是定义的关键字,说明下面的部分是定义部分,一直到begin结束,begin到end之间是代码段。v_sum,v_num 是变量名,被声明为number类型。函数get_salary()声明了两个变量,一个返回值。oracle的参数有两种属性,in,out。一般默认为in,就是传值的,out类型可以理解为c里面的形参,传地址一类的,声明为OUT属性的参数,可以把函数对参数的修改带出来。比如下面:CREATE OR REPLACEFUNCTION test(v_var1 NUMBER,v_var2 OUT NUMBER)RETURN NUMBER ISv_var1:=v_var1+1;v_var2:=v_var2+1;return v_var1;调用DECLAREv_var1 NUMBER;v_var2 NUMBER;v_var3 NUMBER;BEGINv_var1:=1;v_var2:=1;v_var3 :=test(v_var1, v_var2);DBMS_OUTPUT.PUT_LINE('v_var1='||v_var1||'\nv_var2='||v_var2||'\nv_var3='||v_var3);END;那么输出应该是v_var1=1v_var2=2v_var3=2理解了out的含义,再看你的代码就容易了因为函数申明emp_count为out,所以他将带出在函数中的变化。函数里有select count(*) into emp_count from .........样子的语句。所以函数执行完成后这个变量的值其实是该部门的人数。

红糖糍粑

call GetPY(@str varchar(500)) 就可以了sql2005中是exec GetPY(@str varchar(500)) 。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Oracle