【问题标题】:Pl/SQL package including yearly salary calculation functionPL/SQL包含年薪计算功能
【发布时间】:2015-04-12 13:04:21
【问题描述】:

在 PL/SQL 中创建包时我需要帮助,如下所示: 一个包含一个函数和一个过程的包。函数计算特定员工的年薪,并使用过程将年薪插入到另一个具有员工 ID 的表中。 这是我尝试过的,但我不知道如何添加一个插入我的值的过程 进入“particular_emp”表

CREATE TABLE particular_emp (
  salary string NOT NULL,
  emp_id NUMBER NOT NULL
);

CREATE OR REPLACE PACKAGE salary IS
CREATE OR REPLACE FUNCTION get_yearly_salary(p_sal  IN employees.salary%TYPE,
                                             p_comm IN employees.commission_pct%TYPE)
  RETURN NUMBER IS
  BEGIN
    RETURN (NVL(p_sal, 0) * 12 + (NVL(p_comm, 0) * nvl(p_sal, 0) * 12));
  END get_yearly_salary;

【问题讨论】:

  • 到目前为止你尝试过什么?如果您编写了一些代码但它不起作用,请编辑您的问题以包含该代码、您希望它做什么以及它实际做什么,包括任何错误消息。目前,您的问题并未表明您已经为自己编写代码付出了任何努力,而是向我们建议您希望其他人免费为您编写代码。
  • 听起来很像家庭作业。

标签: mysql sql oracle plsql


【解决方案1】:

这是我的做法及其工作原理!

CREATE OR REPLACE PACKAGE empinfo
IS
FUNCTION YSALARY(p_empno IN NUMBER) RETURN NUMBER;
PROCEDURE INSERTSAL (p_empno IN NUMBER);
END empinfo;
/


CREATE OR REPLACE PACKAGE BODY empinfo is
FUNCTION YSALARY(p_empno IN NUMBER) RETURN NUMBER IS
vsal INTEGER;
BEGIN
vsal :=200;
vsal :=200*12;
EXCEPTION 
WHEN NO_DATA_FOUND
THEN
DMBS_OUTPUT.PUT_LINE('NO DATA is available');
END;
PROCEDURE INSERTSAL(p_empno IN NUMBER) is
BEGIN
INSERT INTO EMPLOYEESALARY
VALUES(200,YSALARY(1));
EXCEPTION
WHEN NO_DATA_FOUND
THEN
DBMS_OUTPUT.PUT_LINE('NO DATA');
END;
END empinfo;
/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多