2

编辑:我认为可能无法将 EXISTS 与 IF THEN 一起使用,但我遇到了另一个问题,如何在 sql 语句中使用变量?

EXEC SQL EXECDIRECT CREATE CATALOG CATALOG_NAME;

创建名称为“CATALOG_NAME”的目录,而不是存储在变量中的目录。我知道在 MSSQL 中你可以这样做:

EXEC('CREATE DATABASE ' + '$(DBNAME)')

SolidDB sql 中的等价物是什么?


我正在尝试创建一个soliddb sql存储过程,它接受输入并根据这些输入执行特定的sql语句。我的代码如下:

"CREATE PROCEDURE ACTION
    (OPTION VARCHAR, CATALOG_NAME VARCHAR)
    BEGIN
        IF OPTION= 'create' THEN
            IF EXISTS (SELECT * FROM sys_catalogs WHERE name=CATALOG_NAME) THEN
                 EXEC SQL EXECDIRECT DROP CATALOG CATALOG_NAME;
            END IF
            EXEC SQL EXECDIRECT CREATE CATALOG CATALOG_NAME;

        ELSEIF OPTION= 'drop' THEN
            IF EXISTS (SELECT * FROM sys_catalogs WHERE name=CATALOG_NAME) THEN
                 EXEC SQL EXECDIRECT DROP CATALOG CATALOG_NAME;
            END IF
        END IF
    END";

当我尝试使用执行脚本文件时

solsql -f "C:\solidb.sql" "dba" "dba"

我收到错误:

SOLID Procedure Error 23004: Syntax error: syntax error, line 6

我用注释掉的 If EXISTS 行测​​试了代码,其他一切似乎都工作正常,所以我确定它的 IF EXISTS 行不正确。

所以我的问题是有可能做一些我想做的事情吗?如果是这样,你能告诉我正确的语法吗?提前谢谢!

4

1 回答 1

0

我认为存在只能测试表是否存在。您可能想要使用 IFNULL 您可以在 IFNULL 之前将用户变量设置为 null,然后让选择将其设置为 1。

于 2013-10-13T22:52:05.390 回答