在oracle SQL中创建名为lastnamefirst的用户定义函数
我正在使用oracle SQL Developer 我试图创建一个函数,该函数将接受两个参数(名字和姓氏),并将它们作为一个变量返回,姓氏将首先显示。这是我的功能在oracle SQL中创建名为lastnamefirst的用户定义函数,sql,oracle,Sql,Oracle,我正在使用oracle SQL Developer 我试图创建一个函数,该函数将接受两个参数(名字和姓氏),并将它们作为一个变量返回,姓氏将首先显示。这是我的功能 CREATE OR REPLACE FUNCTION LASTNAMEFIRST ( varFirstName IN VARCHAR2, varLastName IN VARCHAR2 ) RETURN VARCHAR2 AS BEGIN DECLARE varFullName VARCHAR2; DEFINE varFullN
CREATE OR REPLACE FUNCTION LASTNAMEFIRST
(
varFirstName IN VARCHAR2,
varLastName IN VARCHAR2
)
RETURN VARCHAR2 AS
BEGIN
DECLARE varFullName VARCHAR2;
DEFINE varFullName := CONCAT(varLastName,' ' ,varFirstName);
RETURN varFullName;
END LASTNAMEFIRST;
我在“end lastnamefirst”的分号上收到一个错误“语法错误”
我一直试图改变一些小事情,而每当我改变事情时,同样的错误就会出现在不同的地方。我做错了什么?语法错误。应该是
SQL> create or replace function lastnamefirst
2 (varfirstname in varchar2,
3 varlastname in varchar2)
4 return varchar2
5 as
6 begin
7 return varlastname||' '||varfirstname;
8 end;
9 /
Function created.
SQL> select lastnamefirst('Little', 'Foot') result from dual;
RESULT
------------------------------
Foot Little
SQL>
你的代码怎么了
- 您不在正文中声明;如果这样做,则根本没有
关键字,数据类型需要长度(例如DECLARE
)VARCHAR2(30)
只接受两个参数;使用连接运算符,改为双管道CONCAT
|
- PL/SQL中没有定义
DEFINE
CREATE OR REPLACE FUNCTION LASTNAMEFIRST (
in_FirstName IN VARCHAR2,
in_LastName IN VARCHAR2
)
RETURN VARCHAR2 AS
v_FullName varchar2(4000);
BEGIN
v_FullName := in_LastName || ' ' || in_FirstName;
RETURN v_FullName;
END; -- LASTNAMEFIRST;
这当然可以简化(比如不使用局部变量),但它遵循代码的逻辑。使用
声明实际上是在启动一个新的代码块,这会导致您看到的错误。在代码中,如果在开始
之前移动变量声明,则不需要声明
<代码>定义
也无效。像这样的方法应该会奏效:
CREATE OR REPLACE FUNCTION LASTNAMEFIRST
(
varFirstName IN VARCHAR2,
varLastName IN VARCHAR2
)
RETURN VARCHAR2 AS
varFullName VARCHAR2(100);
BEGIN
varFullName := varLastName || ' ' || varFirstName;
RETURN varFullName;
END LASTNAMEFIRST;
完全删除变量声明可以进一步简化:
CREATE OR REPLACE FUNCTION LASTNAMEFIRST
(
varFirstName IN VARCHAR2,
varLastName IN VARCHAR2
)
RETURN VARCHAR2 AS
BEGIN
RETURN varLastName || ' ' || varFirstName;
END LASTNAMEFIRST;