2015-11-10 34 views
-1

在Oracle中,我试图创建一个结合名和姓的函数。每当我运行下面的代码时,我收到一个错误00905。在@FirstName旁边的@符号下方会出现一个红色的小波浪下划线。生成oracle错误00905

CREATE OR REPLACE FUNCTION LastNameFirst 
      ( 
      @FirstName CHAR(25), 
      @LastName CHAR(25) 
     ) 

RETURNS VARCHAR(60) 
AS 
BEGIN 

DECLARE @FullName VARCHAR(60); 

SET @FullName = RTRIM(@LastName) + ', ' + RTRIM(@FirstName); 

RETURN @FullName; 

END; 
+1

您的语法与Oracle无关。这是SQL Server语法。 –

回答

0

你可以只修改你的函数是:

CREATE OR REPLACE FUNCTION LastNameFirst (FirstName IN VARCHAR2,LastName IN VARCHAR2) 

    RETURN VARCHAR2 AS 
    FullName VARCHAR2(60); 

    begin 

    FullName := RTRIM(LastName) || ', ' || RTRIM(FirstName); 

    RETURN FullName; 
    end; 

在PLSQL赋值运算符是:==和连接运算符是||+

1

我认为甲骨文语法将看起来像:

CREATE OR REPLACE FUNCTION LastNameFirst (
    in_FirstName IN VARCHAR2, 
    in_LastName IN VARCHAR2 
) 
RETURN VARCHAR2 AS 
BEGIN 
    RETURN TRIM(in_LastName) || ', ' || TRIM(in_FirstName); 
END; 

从SQL Server的显着不同:

  • 参数可以被指定为inout,而不是什么(SQL Server不允许的功能输出参数)。
  • Oracle不需要字符参数的长度。
  • 字符串的正常类型是varchar2
  • 级联字符是||而不是+
  • @不允许在变量名称中使用。
+1

您不必明确指定'IN'。如果你放弃它,'IN'是默认值。 –