1

私は、ms sql server ステートメントを hana sql ステートメントに渡す作業をしています。変数 (タブ) タイプのテーブルと、次のように定義された変数文字列 (クエリ) があります。

はな声明

CREATE TYPE "tab_table_TYPE" AS TABLE ("DocEntry" integer, "LineId" integer, "VisOrder" integer, "Object" nvarchar(20));  
 v_Tab tab_table_TYPE  

query := 'SELECT [DocEntry],[LineId],[VisOrder] ,[Object] FROM [@INV_AFC]';  

だから私はこの Ms Sql ステートメントを Hana ステートメントに変換しようとしています:

Ms SQL Server ステートメント

INSERT INTO @v_Tab([DocEntry],[LineId],[VisOrder],[Object]) exec (@query)

クエリからの結果セットを保持できる内部テーブル型変数を使用したい!

この文で Sql コンバーターを使用すると、次のエラーが表示されます。

--[注意:ErrorModifier] INSERT INTO ステートメントは EXEC をサポートしていません。EXEC('テーブルに挿入'+ 元のステートメント) を使用します。

--[注:Stringifier] SAP HANA は InsertTarget をサポートしていません

最後に質問です: この場合の正しい Hana Sql ステートメントはどのようになりますか?

4

1 に答える 1

3

テーブル型作成の構文は正しいです。プロシージャ内でクエリを実行しようとしていると思います。

プロシージャ内には、さまざまなオプションがあります。クエリが部分的な結果にすぎず、クエリの結果セットに対してさらにステートメントを実行する場合は、テーブル変数を初期化する必要はまったくありません。変数を結果セットに割り当てるだけです。

table_variable = SELECT DocEntry, LineId, VisOrder, Object FROM INV_AFC;

// Use table_variable for further statements, for example:
SELECT count(*) INTO resultSetCount FROM :table_variable;

クエリがすでに最終結果である場合、出力変数を簡単に定義して、結果セットを出力変数として直接割り当てることができます。例えば:

CREATE PROCEDURE "YOURSCHEMA"."SomeProcedureName" (
      in someInputVariable1 NVARCHAR(255),
      in someInputVariable2 BIGINT,
      out tableVariable "YOURSCHEMA".tab_table_TYPE)
   LANGUAGE SQLSCRIPT
   SQL SECURITY INVOKER AS
BEGIN
    tableVariable = SELECT DocEntry, LineId, VisOrder, Object FROM INV_AFC;
END;

次にこのプロシージャを呼び出すと、3 番目のパラメータに結果セットが自動的に含まれます。

call "YOURSCHEMA"."SomeProcedureName"('someString', 123, ?);
于 2014-06-09T12:27:22.397 に答える