Plsql PL/SQL函数

Plsql PL/SQL函数,plsql,oracle11g,Plsql,Oracle11g,可能重复: 功能: 函数以大写形式显示员工姓名,该函数接受员工表中的员工ID,并以大写形式返回员工的姓名 编写一个小型PL/SQL程序来显示Employee_id分别为107、200和205的员工的姓名 这就是我所做的我不知道如何完成它 你能帮忙吗 CREATE OR REPLACE FUNCTION disp (emp_id in varchar20) return emp_name select into emp_name fname||lname from employees

可能重复:

功能:

  • 函数以大写形式显示员工姓名,该函数接受员工表中的员工ID,并以大写形式返回员工的姓名
  • 编写一个小型PL/SQL程序来显示
    Employee_id
    分别为107、200和205的员工的姓名 这就是我所做的我不知道如何完成它 你能帮忙吗

    CREATE OR REPLACE FUNCTION disp (emp_id in  varchar20) return emp_name
    select into emp_name 
    fname||lname 
    from employees 
    where employee_id=emp_id
    END disp ;
    
    像这样的

    CREATE OR REPLACE 
    FUNCTION Fn_Display(p_empId IN VARCHAR2)
    RETURN VARCHAR2
    
    IS
    
    empName VARCHAR2(100);    
    
    BEGIN
    
     BEGIN
      SELECT UPPER(first_name || ' ' || last_name)
      INTO  empName
      FROM Employees
      WHERE employee_id = p_empId; 
     EXCEPTION 
        WHEN NO_DATA_FOUND THEN
           RAISE NO_DATA_FOUND                
     END;
    
    
     RETURN empName;
    
    END Fn_Display;
    
    您可以在任何地方调用此函数。这是一个样本

      DECLARE
    
        empId VARCHAR2(100);
        empName VARCHAR2(100);
    
      BEGIN
    
        empId := &ENTER_EMPLOYEE_ID;
        empName := Fn_Display(empId);
    
        DBMS_OUTPUT.PUT_LINE('Employee Name: '||empName);
    
      END;
    

    你可以试试这段代码,也许这段代码适合你:

    CREATE OR REPLACE FUNCTION disp (emp_id in  varchar2) return varchar2 IS
    emp_name varchar2(256);
    BEGIN
      select UPPER(fname || ' ' || lname) 
      into emp_name  
      from employees 
      where employee_id = emp_id;
      return emp_name;
    END disp;
    

    你的错误处理很差。这比根本没有异常处理程序更糟糕。该函数应引发异常。否则,任何故障都将被抑制。如果客户端应用程序不支持DBMS_输出,或者如果它被禁用,用户在发生错误时将不会得到任何反馈。@APC非常感谢。作为PL/SQL的初学者,我非常感谢您的评论。我已编辑代码以删除您指出的错误。最好将您的参数命名为employee_id,与列名相同,然后在查询中使用函数名限定对它的引用。例如,“WHERE employee_id=fn_display.employee_id”这仍然不是一个很好的异常处理。捕获异常,然后再次引发它。返回一个字符串表示emp不存在或引发一个有意义的异常可能是有意义的,即:`raise-application_error(-20001,'emp在DB中不存在'),非常感谢,先生。我感谢你的帮助;)非常感谢。这很有帮助