过程语法不正确

时间:2016-01-07 12:44:13

标签: tsql sql-server-2012

我不熟悉PLSQL或MSSQL数据库中的过程编程(2012)。但是我生锈了,我搞砸了语法。

CREATE PROCEDURE [dbo].[AddActivity]
    @activity_name nvarchar(255),
    @responsible_first_name nvarchar(255),
    @responsible_last_name nvarchar(255),
    @estimated_savings numeric(18),
    @estimated_start datetime,
    @estimated_end datetime,
    @department_id int,
    @description nvarchar(MAX)
AS
    DECLARE @return_code AS int = 0;
    IF NOT EXISTS(SELECT 1 FROM dbo.Department WHERE @department_id = id)
        BEGIN
            @return_code = -1
        END
    ELSE
        IF NOT EXISTS(SELECT 1 FROM dbo.Activity WHERE @activity_name = activity_name)
            BEGIN
            /* There is no duplicate (supposedly) so insert the entry here. */
            END
        ELSE
            BEGIN
                @return_code = -2
            END
RETURN @return_code

帮助一位开发人员和他生锈的记忆? :d

2 个答案:

答案 0 :(得分:2)

至少有一个问题是@return_code = -1。您需要SETSELECT

SELECT @return_code = -1

答案 1 :(得分:1)

您需要SET变量(@return_code)中DECLARE的值CREATE PROCEDURE [dbo].[AddActivity] @activity_name nvarchar(255), @responsible_first_name nvarchar(255), @responsible_last_name nvarchar(255), @estimated_savings numeric(18), @estimated_start datetime, @estimated_end datetime, @department_id int, @description nvarchar(MAX) AS DECLARE @return_code AS int = 0; IF NOT EXISTS(SELECT 1 FROM dbo.Department WHERE @department_id = id) BEGIN SET @return_code = -1 END ELSE IF EXISTS(SELECT 1 FROM dbo.Activity WHERE @activity_name = activity_name) BEGIN SET @return_code = -2 --Removed the empty BEGIN/END by changing the IF NOT EXISTS to IF EXISTS END RETURN @return_code 。试试这个:

http://www.example.com/documentation/invoices/....