2015-11-10 56 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'是默認值。 –