1

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

哈娜声明

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 Converter 时显示此错误:

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

--[Note: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;

然后,当您调用此过程时,第三个参数将自动包含您的结果集:

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