点击此处---> 群内免费提供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)
我已经在不使用虚拟表的环境中重新创建了您的过程,并且可以正常工作。 它今天会输出值" XYZ"。
为了理解根本原因,很有趣的是看看这是否也对您有用。 如果是,则它在虚拟表中,或者在数据类型DATS与VARCHAR(8)中。
您好,
我从同一来源验证了具有表日期且该字段的类型为DATS的数据类型,我发送了图像,应使用哪种类型的转换?,请您提供帮助。
谢谢!
嗨,基思,
您能为我做两件事吗?
1。 尝试通过在前面加一个冒号来调用变量,例如
从" ODSLAYER"中选择"/BIC/ZHC_EPIS"。"V_ZHC_EPIS$P"在"/img/BIC/ZHCAPEEPI" =:FECHACARGAINIVAR;
2。 尝试在IF之前实例化变量,例如。
DECLARE FECHACARGAINIVAR VARCHAR(8):='19000101';
单独尝试他们以了解每次更改的影响。
谢谢
点
可以解释to_varchar()。 如果您有条件将DATS(= varchar(8))与日期进行比较,则该日期将使用默认格式转换为varchar。
对于我来说是YYYY-MM-DD的日期,显然字符串'20190928'与字符串'2019-09-28'不匹配。
整数转换 ,默认值为具有相同字符的字符串。 因此,将1234转换为'1234',将-1234转换为'-1234'。
无论如何,使用to_varchar()进行单独的主题转换和显式转换更安全。
一周热门 更多>