打开远程数据库的游标时出错未知值:用于查询sql hana的参数

2020-09-01 04:02发布

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

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


专家们,

当我使用以下参数创建存储过程时遇到数据类型转换问题:

读取的表来自Hana上的BW

日期=" ODSLAYER"表的"/img/BIC/ZHCAPEEPI"。 " V_ZHC_EPIS $ P"的类型为VARCHAR(8)

当我打" ODSLAYER"时。" BORRAR_SP_CARGA_BW_BIZ7"('20190923'); 如果他回答我

但是当我想从前一天获取数据时,会出现以下错误:" ODSLAYER"。" BORRAR_SP_CARGA_BW_BIZ7"('19000101')

(SQL编辑器)无法执行'call" ODSLAYER"。" BORRAR_SP_CARGA_BW_BIZ7"('19000101')'
错误:(dberror)403-内部错误:" ODSLAYER"。" BORRAR_SP_CARGA_BW_BIZ7":行 32 col 0(在pos 359处):打开远程数据库的游标时出错未知值:查询" SELECT" V_ZHC_EPIS $ P"的参数。"/img/BIC/ZHC_EPIS"从" BW.ZHC_EPIS $ P"" V_ZHC_EPIS $ P" " V_ZHC_EPIS $ P"。"/img/BIC/ZHCAPEEPI" =?"


我创建了以下两个存储过程:

创建过程" ODSLAYER"。" BORRAR_SP_CARGA_BW_BIZ7"(输入整数)语言SQLSCRIPT

SQL安全调用程序

如开始

DECLARE FECHACARGAINIVAR VARCHAR(8);

如果:FECHAIN ='19000101',则

从DUMMY中选择TO_VARCHAR(ADD_DAYS(CURRENT_DATE,-1),'YYYYMMDD')到FECHACARGAINIVAR中;

else从DUMMY中选择TO_VARCHAR(:FECHAIN)进入FECHACARGAINIVAR;

如果结束;

从" ODSLAYER"中选择"/BIC/ZHC_EPIS"。"V_ZHC_EPIS$P",其中"/img/BIC/ZHCAPEEPI" = FECHACARGAINIVAR;

END

创建过程" ODSLAYER"。" BORRAR_SP_CARGA_BW_BIZ8"(输入整数)语言SQLSCRIPT

SQL安全调用者为

BEGIN DECLARE FECHACARGAINIVAR VARCHAR(8);

如果:FECHAIN ='19000101',则

从DUMMY中选择TO_VARCHAR(ADD_DAYS(NOW(),-1),'YYYYMMDD')到FECHACARGAINIVAR中;

else从DUMMY中选择TO_VARCHAR(:FECHAIN)进入FECHACARGAINIVAR;

如果结束;

从" ODSLAYER"中选择"/BIC/ZHC_EPIS"。"V_ZHC_EPIS$P",其中"/img/BIC/ZHCAPEEPI" = FECHACARGAINIVAR;

END

由于该错误,它看起来好像该参数为null =? ,如果他给我信息='20190923'时调试该参数,

代码的哪一部分不正确,请您帮我。

在此先感谢您的支持

基思C。

datos-web.jpg (38.1 kB)

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

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


专家们,

当我使用以下参数创建存储过程时遇到数据类型转换问题:

读取的表来自Hana上的BW

日期=" ODSLAYER"表的"/img/BIC/ZHCAPEEPI"。 " V_ZHC_EPIS $ P"的类型为VARCHAR(8)

当我打" ODSLAYER"时。" BORRAR_SP_CARGA_BW_BIZ7"('20190923'); 如果他回答我

但是当我想从前一天获取数据时,会出现以下错误:" ODSLAYER"。" BORRAR_SP_CARGA_BW_BIZ7"('19000101')

(SQL编辑器)无法执行'call" ODSLAYER"。" BORRAR_SP_CARGA_BW_BIZ7"('19000101')'
错误:(dberror)403-内部错误:" ODSLAYER"。" BORRAR_SP_CARGA_BW_BIZ7":行 32 col 0(在pos 359处):打开远程数据库的游标时出错未知值:查询" SELECT" V_ZHC_EPIS $ P"的参数。"/img/BIC/ZHC_EPIS"从" BW.ZHC_EPIS $ P"" V_ZHC_EPIS $ P" " V_ZHC_EPIS $ P"。"/img/BIC/ZHCAPEEPI" =?"


我创建了以下两个存储过程:

创建过程" ODSLAYER"。" BORRAR_SP_CARGA_BW_BIZ7"(输入整数)语言SQLSCRIPT

SQL安全调用程序

如开始

DECLARE FECHACARGAINIVAR VARCHAR(8);

如果:FECHAIN ='19000101',则

从DUMMY中选择TO_VARCHAR(ADD_DAYS(CURRENT_DATE,-1),'YYYYMMDD')到FECHACARGAINIVAR中;

else从DUMMY中选择TO_VARCHAR(:FECHAIN)进入FECHACARGAINIVAR;

如果结束;

从" ODSLAYER"中选择"/BIC/ZHC_EPIS"。"V_ZHC_EPIS$P",其中"/img/BIC/ZHCAPEEPI" = FECHACARGAINIVAR;

END

创建过程" ODSLAYER"。" BORRAR_SP_CARGA_BW_BIZ8"(输入整数)语言SQLSCRIPT

SQL安全调用者为

BEGIN DECLARE FECHACARGAINIVAR VARCHAR(8);

如果:FECHAIN ='19000101',则

从DUMMY中选择TO_VARCHAR(ADD_DAYS(NOW(),-1),'YYYYMMDD')到FECHACARGAINIVAR中;

else从DUMMY中选择TO_VARCHAR(:FECHAIN)进入FECHACARGAINIVAR;

如果结束;

从" ODSLAYER"中选择"/BIC/ZHC_EPIS"。"V_ZHC_EPIS$P",其中"/img/BIC/ZHCAPEEPI" = FECHACARGAINIVAR;

END

由于该错误,它看起来好像该参数为null =? ,如果他给我信息='20190923'时调试该参数,

代码的哪一部分不正确,请您帮我。

在此先感谢您的支持

基思C。

datos-web.jpg (38.1 kB)
付费偷看设置
发送
5条回答
空代码
1楼-- · 2020-09-01 04:20

我已经在不使用虚拟表的环境中重新创建了您的过程,并且可以正常工作。 它今天会输出值" XYZ"。

为了理解根本原因,很有趣的是看看这是否也对您有用。 如果是,则它在虚拟表中,或者在数据类型DATS与VARCHAR(8)中。

创建列表" V_ZHC_EPIS $ P"
 ("/img/BIC/ZHCAPEEPI" varchar(8),"/img/BIC/ZHC_EPIS" varchar(18));

 插入" V_ZHC_EPIS $ P"值(" 20190927"," ABC");
 插入" V_ZHC_EPIS $ P"值(" 20190926"," XYZ");

 创建过程" BORRAR_SP_CARGA_BW_BIZ7"(在整数中)
 语言SQLSCRIPT
 SQL安全调用程序
 一开始
   DECLARE FECHACARGAINIVAR VARCHAR(8);
   如果:FECHAIN ='19000101'然后
     选择TO_VARCHAR(ADD_DAYS(CURRENT_DATE,-1),'YYYYMMDD')
从DUMMY进入FECHACARGAINIVAR; 其他 从DUMMY中选择TO_VARCHAR(:FECHAIN)到FECHACARGAINIVAR中; 万一; 从" V_ZHC_EPIS $ P"中选择"/img/BIC/ZHC_EPIS" "/img/BIC/ZHCAPEEPI" = FECHACARGAINIVAR的位置; 结束; 呼叫" BORRAR_SP_CARGA_BW_BIZ7"('19000101');
风早神人
2楼-- · 2020-09-01 04:39

您好,

我从同一来源验证了具有表日期且该字段的类型为DATS的数据类型,我发送了图像,应使用哪种类型的转换?,请您提供帮助。

谢谢!

zhangjiyang1323
3楼-- · 2020-09-01 04:24

嗨,基思,

您能为我做两件事吗?

1。 尝试通过在前面加一个冒号来调用变量,例如

从" ODSLAYER"中选择"/BIC/ZHC_EPIS"。"V_ZHC_EPIS$P"在"/img/BIC/ZHCAPEEPI" =:FECHACARGAINIVAR;

2。 尝试在IF之前实例化变量,例如。

DECLARE FECHACARGAINIVAR VARCHAR(8):='19000101';

单独尝试他们以了解每次更改的影响。

谢谢

callcenter油条
4楼-- · 2020-09-01 04:25

可以解释to_varchar()。 如果您有条件将DATS(= varchar(8))与日期进行比较,则该日期将使用默认格式转换为varchar。

对于我来说是YYYY-MM-DD的日期,显然字符串'20190928'与字符串'2019-09-28'不匹配。

整数转换 ,默认值为具有相同字符的字符串。 因此,将1234转换为'1234',将-1234转换为'-1234'。

无论如何,使用to_varchar()进行单独的主题转换和显式转换更安全。

天桥码农
5楼-- · 2020-09-01 04:15
< p>嗨,基思,为我的消失而道歉,我忙了两个星期,现在才再次入住。 你说对了吗? 谢谢点

一周热门 更多>