Oracle 函数连接PL/SQL中的名字和姓氏

Oracle 函数连接PL/SQL中的名字和姓氏,oracle,function,plsql,Oracle,Function,Plsql,如何编写一个函数来连接员工的名字和姓氏,将员工id作为输入传递给函数CONCAT\u name。我试过的代码是- set serveroutput on; create or replace function concat_name(v_id employee.emp_id%type) return varchar2(25) is begin select (first_name || last_name) into concat_name from em

如何编写一个函数来连接员工的名字和姓氏,将员工id作为输入传递给函数
CONCAT\u name
。我试过的代码是-

set serveroutput on;
    create or replace function concat_name(v_id employee.emp_id%type)
    return varchar2(25)
    is
    begin
    select (first_name || last_name) into concat_name from employee where emp_id = v_id;
    dbms_output.put_line(concat_name);
    end;
    /
预期产量为-

{CONCAT_NAME(101)
--------------------------------------------------------------------------------
SmithWilliam
SmithWilliam}
但是运行上面的错误是-

Warning: Function created with compilation errors.
SELECT CONCAT_NAME(101) FROM EMPLOYEE
       *
ERROR at line 1:
ORA-06575: Package or function CONCAT_NAME is in an invalid state

任何帮助都将非常感谢

嗯,不是那样的。函数存在有一个特定的原因:返回值。所以-
return
it,不要
dbms\u输出。把它放到行中。当然,您也应该使用正确的语法。我建议您先阅读文档,然后阅读代码

我喜欢10g,因为它的主页被很好地划分为有用的部分。查看最受欢迎的书籍列表,然后阅读

  • 应用程序开发人员指南-基础知识
  • PL/SQL用户指南和参考
因为它们涵盖了您目前正在学习的PL/SQL。我想你一定知道SQL;如果没有,那就先读那本书。另外,既然您知道要阅读什么,请随意查找与您的数据库版本相关的文档


在您的任务中:

SQL> create or replace function concat_name(v_id employee.emp_id%type)
  2    return varchar2
  3  is
  4    retval varchar2(25);
  5  begin
  6    select first_name || last_name
  7      into retval
  8      from employee
  9      where emp_id = v_id;
 10
 11    return retval;
 12  end;
 13  /

Function created.

SQL> select concat_name(101) from dual;

CONCAT_NAME(101)
-----------------------------------------------------------------------------
SmithWilliam

SQL>

运行
show errors
查看问题的详细信息非常感谢您提供的解决方案和学习资料,我一定会仔细阅读。