编辑:我认为可能无法将 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 行不正确。
所以我的问题是有可能做一些我想做的事情吗?如果是这样,你能告诉我正确的语法吗?提前谢谢!