兄弟你看下这个对不对
--创建一个包(SP_PACKAGE1):包括包头和包体,名字均为包名
--创建一个包头:SP_PACKAGE1
--该包体申明有一个存储过程:UPDATESALBYNO(根据empno修改该雇员的sal)
--该包体申明有一个函数:ANNUA_INCOME(根据ename查询该雇员的年薪)
CREATE OR REPLACE PACKAGE SP_PACKAGE1 IS
PROCEDURE UPDATESALBYNO(NEWSALARY NUMBER,EMPNUBER NUMBER);
FUNCTION ANNUA_INCOME(NAME VARCHAR2) RETURN NUMBER;
END;--创建包体,即定义好在包头中申明的存储过程以及函数
CREATE OR REPLACE PACKAGE BODY SP_PACKAGE1 IS
PROCEDURE UPDATESALBYNO(NEWSALARY NUMBER,EMPNUBER NUMBER)
IS
BEGIN
UPDATE EMP SET SAL = NEWSALARY WHERE EMPNO = EMPNUBER;
END;
FUNCTION ANNUA_INCOME(NAME VARCHAR2)
RETURN NUMBER IS ANNUA_SAL NUMBER;
BEGIN
SELECT SAL*12+NVL(COMM,0) INTO ANNUA_SAL FROM EMP WHERE ENAME = NAME;
RETURN ANNUA_SAL;
END;
END;--调用包中的存储过程
EXEC SP_PACKAGE1.UPDATESALBYNO(1020,886);
--创建一个包(SP_PACKAGE1):包括包头和包体,名字均为包名
--创建一个包头:SP_PACKAGE1
--该包体申明有一个存储过程:UPDATESALBYNO(根据empno修改该雇员的sal)
--该包体申明有一个函数:ANNUA_INCOME(根据ename查询该雇员的年薪)
CREATE OR REPLACE PACKAGE SP_PACKAGE1 IS
PROCEDURE UPDATESALBYNO(NEWSALARY NUMBER,EMPNUBER NUMBER);
FUNCTION ANNUA_INCOME(NAME VARCHAR2) RETURN NUMBER;
END;--创建包体,即定义好在包头中申明的存储过程以及函数
CREATE OR REPLACE PACKAGE BODY SP_PACKAGE1 IS
PROCEDURE UPDATESALBYNO(NEWSALARY NUMBER,EMPNUBER NUMBER)
IS
BEGIN
UPDATE EMP SET SAL = NEWSALARY WHERE EMPNO = EMPNUBER;
END;
FUNCTION ANNUA_INCOME(NAME VARCHAR2)
RETURN NUMBER IS ANNUA_SAL NUMBER;
BEGIN
SELECT SAL*12+NVL(COMM,0) INTO ANNUA_SAL FROM EMP WHERE ENAME = NAME;
RETURN ANNUA_SAL;
END;
END;--调用包中的存储过程
EXEC SP_PACKAGE1.UPDATESALBYNO(1020,886);
解决方案 »
- 如何用存储过程把表中一个任意结构的xmltype字段 存入一个新数据表中
- oracle10g作为客户端,能否访问oracle7的服务端?
- 关于oracle 数据管理数据迁移
- oracle9i透明网关技术
- 添加问题成功 oracle根据表中的某个字段,按照这个字段把它分范围查询
- 小弟我再次安装oracle9i又有问题
- oracle8i安装完成后,enterprise security manager 起不来!
- 急!!急!!
- 关于database link 的问题,请高手指教。
- 关于Oracle9i中Advanced Queue的权限问题
- Oracle的一个分页的问题,数据多时有重复
- MySql 如何对Date进行求和
传入参数不用指定长度吧,还有就是对不属于自己的表进行操作时最好是带上用户名前缀,如:SCOTT.EMP
传入参数不用指定长度吧,还有就是对不属于自己的表进行操作时最好是带上用户名前缀,如:SCOTT.EMP
恩呢,是的,是的,还是初次接触,懂得不多,还请多多关照!