错误插入表变量Hana

时间:2014-06-07 14:26:41

标签: sql sql-server hana

我正在将ms sql server语句传递给hana sql语句。我有一个变量(Tab)类型表和一个变量字符串(查询)定义为:

Hana声明

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 Statement

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

我希望使用一个内部表类型变量,它可以保存查询的结果集!

当我使用带有这句话的Sql Converter时显示以下错误:

- [注意:ErrorModifier] INSERT INTO语句不支持EXEC;使用EXEC('插入表格' + originalstatement)

- [注意:字符串] SAP HANA不支持InsertTarget

最后问题是:对于这种情况,Hana Sql语句的正确性如何?

1 个答案:

答案 0 :(得分:2)

表类型创建的语法是正确的。我想你正试图在一个程序中执行查询。

在程序中,您有不同的选择。如果您的查询只是部分结果,并且您希望在查询的结果集上运行更多语句,则根本不需要初始化表变量。只需为结果集指定一个变量:

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, ?);