标量类型不允许;可以转换吗?

2020-09-27 06:47发布

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

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


嗨朋友,

我正在尝试使用表函数返回今天的日期。 据我了解,Date数据类型本质上是标量,但是我试图将其转换为字符,但不允许。

出了什么问题? 这种转换可能吗? 我遇到错误

"无法创建目录对象:标量类型不允许;第14行第9列(在pos 367处)"

功能" BIUSER"。" GK1.Func_Proc :: TF1"()
 返回表(DT1 VARCHAR(20))
 语言SQLSCRIPT
 SQL安全调用者
 DT1 VARCHAR(20);
 开始
/*********************************
 编写函数逻辑
  ********************************/
  声明DT日期;
 
  从DUMMY中将CURDATE()转换为DT;
  从DUMMY中选择TO_CHAR(:DT,'DD-MON-YYYY')进入DT1;
  返回值:DT1;
 结束;
 

请提出建议。

谢谢

Gaurav

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

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


嗨朋友,

我正在尝试使用表函数返回今天的日期。 据我了解,Date数据类型本质上是标量,但是我试图将其转换为字符,但不允许。

出了什么问题? 这种转换可能吗? 我遇到错误

"无法创建目录对象:标量类型不允许;第14行第9列(在pos 367处)"

功能" BIUSER"。" GK1.Func_Proc :: TF1"()
 返回表(DT1 VARCHAR(20))
 语言SQLSCRIPT
 SQL安全调用者
 DT1 VARCHAR(20);
 开始
/*********************************
 编写函数逻辑
  ********************************/
  声明DT日期;
 
  从DUMMY中将CURDATE()转换为DT;
  从DUMMY中选择TO_CHAR(:DT,'DD-MON-YYYY')进入DT1;
  返回值:DT1;
 结束;
 

请提出建议。

谢谢

Gaurav

付费偷看设置
发送
2条回答
d56caomao
1楼-- · 2020-09-27 07:14

不确定为什么需要自己的函数来确定字符日期值(也许您只需要在一个地方执行格式化逻辑?),但是问题在于" DT1"是标量值,而您 尝试将其作为表格返回。 这是不可能的。

我假设您不需要表函数,建议将函数更改为标量函数。

否则,如果您真的只需要一行结果(无论出于何种原因),就必须替换这些行

从DUMMY中选择TO_CHAR(:DT,'DD-MON-YYYY')进入DT1;
 返回:DT1; 

通过这样的东西

 result =从DUMMY中选择TO_CHAR(:DT,'DD-MON-YYYY')为" DT1";
 返回:结果; 

此致,
Florian

微wx笑
2楼-- · 2020-09-27 06:51

如果您没有将"结果"声明为标量变量,它将可以工作。 没有必要声明它。 另一点是,您已将重播类型中的列名称更改为"结果"。 这与所选内容的列名不匹配。

它以以下形式工作:

功能" BIUSER"。" GK1.Func_Proc :: TF1"()
 返回表(" DT1" VARCHAR(20))
 语言SQLSCRIPT
 SQL安全调用者
 开始
  结果=从DUMMY中选择" DT1"作为TO_CHAR(CURDATE(),'DD-MON-YYYY');
  返回:结果;
 结束; 

或者短一行:

功能" BIUSER"。" GK1.Func_Proc :: TF1"()
 返回表(" DT1" VARCHAR(20))
 语言SQLSCRIPT
 SQL安全调用者
 开始
  从DUMMY返回SELECT TO_CHAR(CURDATE(),'DD-MON-YYYY')作为" DT1";
 结束; 

此致,
弗洛里安

一周热门 更多>