0

私は T-SQL の経験が豊富で、お客様のために IBM Netezza アプライアンスに慣れてきました。Windows で Netezza エミュレーター 7.1 を試し、DDL、DML、Control、および Transaction ステートメントを実行しました。また、Bluemix クラウドで試用版の DashDB にサインアップしました。

問題:

DashDB の Aginity ワークベンチと Bluemix の RunSQL の両方で構文のハードルに直面しています。

これらにより、単純な DDL や DML ステートメントを超える複雑な SQL を書くことができなくなります。私はこれについてかなりイライラしています。

  1. 変数宣言

T-SQL:

DECLARE @I AS INTEGER;

私はこれを試しました

DECLARE VARIABLE i INTEGER ; 

エラー [42601] [IBM][DB2/LINUXX8664] SQL0104N 「DECLARE i」の後に予期しないトークン「INTEGER」が見つかりました。予想されるトークンには、「END-OF-STATEMENT」が含まれる場合があります。

DECLARE i AS INTEGER;

エラー [42601] [IBM][DB2/LINUXX8664] SQL0104N 「DECLARE i AS」の後に予期しないトークン「INTEGER」が見つかりました。予想されるトークンには、「END-OF-STATEMENT」が含まれる場合があります。

DECLARE i INTEGER;

エラー [42601] [IBM][DB2/LINUXX8664] SQL0104N 「DECLARE i」の後に予期しないトークン「INTEGER」が見つかりました。予想されるトークンには、「END-OF-STATEMENT」が含まれる場合があります。

これらの仕事のどれも...私は単に困惑しています!

  1. この非常に単純なストアド プロシージャのサンプルは、コンパイルできません。

コード:

CREATEPROCEDURE DASH6441.FOO (IN ORDER_DETAIL_CODE_IN VARCHAR(16), IN SALES_STAFF_CODE_IN INTEGER)
LANGUAGESQL
BEGIN
SELECT*FROM DASH6441.EMP;
END;

エラー:

エラー [42601] [IBM][DB2/LINUXX8664] SQL0104N "ECT * FROM DASH6441." の後に予期しないトークン "EMP" が見つかりました。予想されるトークンには、「END」が含まれる場合があります。

質問:

  • 私が欠けているものはありますか?

  • T-SQL のように、SQL スクリプトの構造、またはUSING <db_name>コンパイラが期待する予備的なディレクティブ (T-SQL など) はありますか? 私はそれを疑いますが、ただ尋ねます

  • 変数宣言、ストアド プロシージャ、またはジェネリック スクリプトのスケルトンをこれらすべての要素と共有できる場合、どれが正常にコンパイルされると思いますか? そこから自分を奮い立たせることができるかもしれません

私は現在、この構文の問題でショーストッパーに直面しています。

4

2 に答える 2

0

作成手順の問題については、Margriet があいまいなステートメント区切り文字について説明したとおりです。たとえば、END ステートメントの後に区切り文字 '@' を使用し、ステートメントを実行する前に RunSQL ページでこの文字を設定します。

変数宣言に関する問題について: RunSQL を使用すると、個々の SQL ステートメントを実行できます。変数宣言はスタンドアロン SQL としては有効ではなく、ルーチンのコンテキスト内 (作成したストアド プロシージャの BEGIN..END ブロック内など) でのみ有効です。たとえば、次の例を参照してください: https://www.ibm.com/support/knowledgecenter/SS6NHC/com.ibm.swg.im.dashdb.sql.ref.doc/doc/r0004239.html

于 2016-09-01T08:49:45.633 に答える
0

runSQL のデフォルトのステートメント区切り文字を ; 以外のものに変更する必要がある場合があります。プロシージャが正しく処理されるようにします。

dashDB での SQL PL の使用の詳細については、こちらを参照してください。

于 2016-08-31T16:21:48.647 に答える