2

編集: IF THEN で EXISTS を使用することはおそらく不可能であると考えましたが、SQL ステートメント内で変数を使用する方法という別の問題で立ち往生していますか?

EXEC SQL EXECDIRECT CREATE CATALOG CATALOG_NAME;

変数に格納されているものの代わりに、「CATALOG_NAME」という名前でカタログを作成します。私はあなたがこれを行うことができるMSSQLで知っています:

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

SolidDB sql で同等のものは何ですか?


入力を受け取り、それらの入力に基づいて特定の sql ステートメントを実行する soliddb 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