我可以在调用过程中将表添加为参数吗?

2020-08-20 07:58发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)找到了一个博客,该博客可以输出如...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


找到了一个博客,该博客可以输出如下表,

创建过程PROC_DUMMY(在int,in b int,out c int,out d DUMMY,out e TABLES中)
  语言sqlscript
  将sql数据读取为
 开始
  c:=:a +:b;
  d =从DUMMY中选择*;
  e =从表中选择*;
 结束
 client.prepare('call PROC_DUMMY(?,?,?,?,?)',function(err,statement){
  如果(错误){
  返回console.error('准备错误:',err);
  }
  statement.exec({
  答:3,
  B:4
  },函数(错误,参数,dummyRows,tableRows){
  如果(错误){
  返回console.error('Exec error:',err);
  }
  console.log('Parameters:',parameters);
  console.log('Dummies:',dummyRows);
  console.log('Tables:',tableRows);
  });
 });
 

如何添加表作为输入参数并执行它?

5条回答
Violet凡
2020-08-20 08:41

SAP HANA客户端编程接口(如节点接口)无法创建/填充表类型的输入参数。

一种解决方法是在前部创建本地临时表(其结构与输入相同) 参数)在HANA上通过接口填充,并通过接口填充。

下面是使用@ sap/hana-client模块的简单示例:

 const client = require(  " @ sap/hana-client");
 const conn = client.createConnection();
 conn.connect(
   {
     serverNode:" hanahost:hanaport",
     uid:"用户",
     pwd:"密码",
   },
   (错误)=> {
     如果(错误){
       console.log(err);
       返回;
     }

    //创建本地临时表
     conn.exec(
       `CREATE local TEMPORARY column TABLE" MISC"。"#MISCTMPTAB01"如" MISC"。" MISC_NVARCHAR",
       (错误)=> {
         如果(错误){
           console.log("创建临时表错误:" + JSON.stringify(err));
           返回;
         }

        //将数据插入本地临时表
         conn.exec(`INSERT INTO" MISC"。"#MISCTMPTAB01" VALUES(1,'Test')`,(err)=> {
             如果(错误){
               console.log(`临时表插入错误:$ {JSON.stringify(err)}`);
               返回;
             }

            //调用过程(临时表的名称作为表键入的参数的参数值)
             conn.prepare(`call" MISC"。" test.misc.procedures :: P_PASS_TABLE"(" MISC"。"#MISCTMPTAB01",?)`,(err,statement)=> {
                 如果(错误){
                   console.log(`语句准备错误:$ {JSON.stringify(err)}`));
                   返回;
                 }

                 statement.exec([],(err,procResult)=> {
                   如果(错误){
                     console.log(`语句执行错误:$ {JSON.stringify(err)}`);
                     返回;
                   }

                   console.log(`过程返回结果:$ {JSON.stringify(procResult)}`);
                 });
               }
             );
           }
         );
       }
     );
   }
 );
 

一周热门 更多>