sql-server - 另一个 procedure 中的 procedure 调用附近的语法不正确

我正在尝试创建一个调用其他 2 procedures 的 procedure 但我收到以下错误:

dbms-a3> CREATE OR ALTER PROCEDURE validateT (@name VARCHAR(30), @value REAL) AS
             BEGIN
                 validateName @name;
                 validateValue @value
             END
[2022-05-15 13:47:26] [S0001][102] Line 3: Incorrect syntax near 'validateName'.

我也尝试使用函数而不是 procedure,但似乎没有任何 VOID 类型,并且返回 NULL 也不起作用。

这是代码:

USE [dbms-a3]
GO


CREATE OR ALTER PROCEDURE validateName (@name VARCHAR(30)) AS
    BEGIN
        IF @name IS NULL OR LEN(@name) < 2
            RAISERROR ('Invalid name', 14, 1)
    END
GO

CREATE OR ALTER PROCEDURE validateValue (@value REAL) AS
    BEGIN
        IF @value IS NULL OR @value < 0
            RAISERROR ('Invalid value', 14, 1)
    END
GO


CREATE OR ALTER PROCEDURE validateT (@name VARCHAR(30), @value REAL) AS
    BEGIN
        validateName @name;
        validateValue @value
    END
GO

回答1

它应该是:

CREATE OR ALTER PROCEDURE validateT (@name VARCHAR(30), @value DECIMAL) AS
    BEGIN
        EXEC validateName @name
        EXEC validateValue @value
    END
GO

相似文章

delphi - 记事本克隆、保存和另存为选项

我正在制作记事本克隆。我已经实现了70%的选项,但是有些选项我不知道该怎么做,我也不知道怎么做。像Save和SaveAs选项。当我打开一些已保存的文本,然后在其中插入新内容时,Save选项如何保存到该...

task - 任务:非常缓慢的响应

我的实际程序创建了一个task,我不会对控制消息做出应有的反应。由于它已经变得相当大,我提出了一个具有相同控制逻辑的简短测试程序。它创建了一个背景task,它每0.1秒重复一个循环。根据受保护的标志“...

随机推荐

最新文章