如下所示:
--包的定义
CREATE PACKAGE sp_package IS--创建一个包
procedure updatesal_pro(emp_id number,newsal number);--包里面有一个过程
function updatesal_fun(emp_id number)return number;--包里面还有一个函数
END;
--包体的定义和实现
CREATE OR REPLACE PACKAGE BODY sp_package IS
procedure updatesal_pro(emp_id number,new sal number)--过程的实现
IS
BEGIN
update l set salary=newsal where employee_id=emp_id;
--dnms_output.put_line(newsal);
END;
function updatesal_fun(emp_id number)return number is--函数的实现
sum_sal number;
BEGIN
select nvl2(commission_pct,(salary+commission_pct)*12,salary*12) from l where employee_id=emp_id;
return sum_sal;
END;
END;
--调用过程
DECLARE
v_newsal l.salary%TYPE;
v_sumsal l.salary%TYPE;
BEGIN
v_newsal:=sp_package.updatesal_pro(111,5000);
dbms_output.put_line(v_newsal);
v_sumsal:=sp_package.updatesal_fun(111);
dbms_output.put_line(v_sumsal);
END;
我这样子调用之后,什么结果都没有输出,而且也不报错,各位高手帮帮忙 怎么调用啊,
顺带说句我用的环境是developer,最好把如何在命令行和窗体中调用的两种都给说下,
谢谢了
--包的定义
CREATE PACKAGE sp_package IS--创建一个包
procedure updatesal_pro(emp_id number,newsal number);--包里面有一个过程
function updatesal_fun(emp_id number)return number;--包里面还有一个函数
END;
--包体的定义和实现
CREATE OR REPLACE PACKAGE BODY sp_package IS
procedure updatesal_pro(emp_id number,new sal number)--过程的实现
IS
BEGIN
update l set salary=newsal where employee_id=emp_id;
--dnms_output.put_line(newsal);
END;
function updatesal_fun(emp_id number)return number is--函数的实现
sum_sal number;
BEGIN
select nvl2(commission_pct,(salary+commission_pct)*12,salary*12) from l where employee_id=emp_id;
return sum_sal;
END;
END;
--调用过程
DECLARE
v_newsal l.salary%TYPE;
v_sumsal l.salary%TYPE;
BEGIN
v_newsal:=sp_package.updatesal_pro(111,5000);
dbms_output.put_line(v_newsal);
v_sumsal:=sp_package.updatesal_fun(111);
dbms_output.put_line(v_sumsal);
END;
我这样子调用之后,什么结果都没有输出,而且也不报错,各位高手帮帮忙 怎么调用啊,
顺带说句我用的环境是developer,最好把如何在命令行和窗体中调用的两种都给说下,
谢谢了
第一个sheet SQL
第二个sheet Output
第三个sheet Statisticssqlplus的话,需要先 set serveroutput on
sql developer: 先到右下的DBMS OUTPUT那个TAB上,点下Enable DBMS Output那个图标。输出也在这个TAB上。
updatesal_pro是个过程,怎么会有返回值呢?function updatesal_fun(emp_id number)return number is--函数的实现
sum_sal number;
BEGIN
select nvl2(commission_pct,(salary+commission_pct)*12,salary*12) from l where employee_id=emp_id; return sum_sal;
END;是
select nvl2(commission_pct,(salary+commission_pct)*12,salary*12) into sum_sal from l吧?
过程的调用可以这样子吗select sp_package.updatesal_pro(111,5000)from dual;
我知道函数的调用可以,过程的可以吗?
可以这样
begin sp_package.updatesal_pro(111,5000);end;