如何在引用SAP HANA DocStore集合的存储过程中应用输入参数?

2020-09-13 01:43发布

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

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


你好

我们正在尝试在SAP HANA DocStore中使用集合。 我们已经定义了可以读取和写入Collection的SQL存储过程,但是在SQL语句的WHERE子句中使用输入参数似乎存在问题。

以下是一些示例:

工具-WebIDE>数据库浏览> SQL控制台

创建集合:

创建收集表"股票"; 


创建新数据的步骤:

步骤"创建"(
 在v_symbol NVARCHAR(6)中,
 在v_info NCLOB中
 )
    语言SQLSCRIPT
    SQL安全调用程序
    如
 开始

    插入股票价值('{
 " symbol":"'|| v_symbol ||'",
 "信息":'||  v_info ||  '
    }');
   
 END 


尝试使用值:

v_symbol-AMZN v_info-{" price":" 1990"," name":" Amazon Inc"}


成功的结果:创建了一行
 {" symbol":" AMZN"," info":{" price":" 1990"," name":" Amazon Inc"}} 

读取数据的步骤:
创建过程"已读"(
 在v_symbol NVARCHAR(6)中
 )
    语言SQLSCRIPT
    SQL安全调用程序
    --DEFAULT SCHEMA <默认模式名称>
    读取SQL DATA AS
   
 开始
   
    选择*从股票中"符号" = v_symbol;
   
 END 

结果出错:
错误:(dberror)[7]:不支持的功能:"读取":第14行第3列(在pos 311处):where子句具有集合表不支持的表达式


更新数据的步骤:
步骤"更新"(
 在v_symbol VARCHAR(6)中,
 IN v_price DOUBLE
 )
    语言SQLSCRIPT
    SQL安全调用程序
    如
 开始
   
     更新股票SET" info"。" price" = v_price WHERE" symbol" = v_symbol;

 END 

结果出错:
错误:(dberror)[7]:不支持的功能:"更新":第13行第4列(在pos 271):无法在set子句中引用docstore 


对COLUMN表类型进行操作时,将执行相同的过程。 COLLECTION出了什么问题? 任何指针将非常有帮助。 谢谢!

(18.4 kB)

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

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


你好

我们正在尝试在SAP HANA DocStore中使用集合。 我们已经定义了可以读取和写入Collection的SQL存储过程,但是在SQL语句的WHERE子句中使用输入参数似乎存在问题。

以下是一些示例:

工具-WebIDE>数据库浏览> SQL控制台

创建集合:

创建收集表"股票"; 


创建新数据的步骤:

步骤"创建"(
 在v_symbol NVARCHAR(6)中,
 在v_info NCLOB中
 )
    语言SQLSCRIPT
    SQL安全调用程序
    如
 开始

    插入股票价值('{
 " symbol":"'|| v_symbol ||'",
 "信息":'||  v_info ||  '
    }');
   
 END 


尝试使用值:

v_symbol-AMZN v_info-{" price":" 1990"," name":" Amazon Inc"}


成功的结果:创建了一行
 {" symbol":" AMZN"," info":{" price":" 1990"," name":" Amazon Inc"}} 

读取数据的步骤:
创建过程"已读"(
 在v_symbol NVARCHAR(6)中
 )
    语言SQLSCRIPT
    SQL安全调用程序
    --DEFAULT SCHEMA <默认模式名称>
    读取SQL DATA AS
   
 开始
   
    选择*从股票中"符号" = v_symbol;
   
 END 

结果出错:
错误:(dberror)[7]:不支持的功能:"读取":第14行第3列(在pos 311处):where子句具有集合表不支持的表达式


更新数据的步骤:
步骤"更新"(
 在v_symbol VARCHAR(6)中,
 IN v_price DOUBLE
 )
    语言SQLSCRIPT
    SQL安全调用程序
    如
 开始
   
     更新股票SET" info"。" price" = v_price WHERE" symbol" = v_symbol;

 END 

结果出错:
错误:(dberror)[7]:不支持的功能:"更新":第13行第4列(在pos 271):无法在set子句中引用docstore 


对COLUMN表类型进行操作时,将执行相同的过程。 COLLECTION出了什么问题? 任何指针将非常有帮助。 谢谢!

(18.4 kB)
付费偷看设置
发送
2条回答
渐行渐远_HoldOn
1楼 · 2020-09-13 02:13.采纳回答

一件事:您需要在过程中的语句中的变量前面加上:

创建或替换过程为"已读"(
 在v_symbol NVARCHAR(6)中
 )
    语言SQLSCRIPT
    SQL安全调用程序
    --DEFAULT SCHEMA <默认模式名称>
    读取SQL DATA AS
   
 开始
   
    选择*从股票"符号" =:v_symbol;
   
 结束
 

第二件事:通过UI调用proc似乎确实存在一些问题,但是使用参数调用看起来不错:

呼叫" DOCSTORE_TEST"。"读取"(V_SYMBOL =>'SAP'/*  */); 

返回

 {" symbol":" SAP"," info":{" price":" 100"," name":" SAP SE"}} 

符合预期。

一只江湖小虾
2楼-- · 2020-09-13 02:05

查询参数化按此处演示的方式进行。 非常感谢, Witalij Rudnicki

一周热门 更多>

点击此处---> EasySAP.com 一起学习S4 HANA ...

相关问答