2017-06-27 37 views
0

我想創建一個存儲過程通過以下方式:的Java存儲過程給了一個錯誤

DROP procedure IF EXISTS plus1inout 
/; 
CREATE procedure plus1inout (IN arg int, OUT res int) 
BEGIN ATOMIC 
    set res = arg + 1; 
END 
/; 

我收到以下錯誤:

Msg 156, Level 15, State 1. 
Incorrect syntax near the keyword 'IF'. 
Msg 156, Level 15, State 1. 
Incorrect syntax near the keyword 'IN'. (Line 3) 
+2

這不是'的Sql Server'語法 –

+0

提示存在的語法:'創建或者更換程序。 –

+1

您正在使用Oracle語法,但錯誤消息定義來自Ms Sql-server。檢查您是否連接到正確的服務器 – Serg

回答

1

您的語法在sql server中無效。

爲了檢查是否存在使用object_id功能

IF OBJECT_ID('plus1inout', 'P') IS NOT NULL 
    DROP PROCEDURE plus1inout 

對於輸入參數,你不必提IN關鍵字。對於OUTPUT參數,最後使用關鍵字OUT。此外參數與@開始在Sql Server

CREATE PROCEDURE Plus1inout (@arg INT, 
          @res INT output) 
AS 
    BEGIN 
     SET @res = @arg + 1; 
    END 

SQL SERVER 2016他們介紹你已經使用了檢查程序

DROP procedure IF EXISTS plus1inout 
1

幾件事情。這個「/」來自oracle。如果你願意,你可以使用GO這個詞。檢查是否存在:使用此代碼:

IF OBJECT_ID('plus1inout', 'P') IS NOT NULL 
     DROP PROC plus1inout 
GO 

然後您創建該過程。 在創建過程中,參數聲明是錯誤的。

CREATE procedure plus1inout (@arg int, @res int out) 
BEGIN ATOMIC 
    set @res = @arg + 1; 
END; 
+0

也參數列表中的輸入不是sql-server。您可能還提到 – GuidoG

+0

CREATE PROC應該如何看起來像 – meallhour

+0

取決於它的oracle或sql-server或其他數據庫 – GuidoG