【问题标题】:stored procedure arithmetic operation with casting带强制转换的存储过程算术运算
【发布时间】:2013-08-02 07:23:31
【问题描述】:

我在 postgresql 数据库上有一个存储过程。当我尝试进行一些涉及类型转换的算术运算时遇到问题。这是代码:

DECLARE 
myVar DOUBLE PRECISION;
myVar2 DOUBLE PRECISION;

BEGIN
SELECT CAST((row1/row2) AS DOUBLE PRECISION) FROM myTable WHERE row3 = "value" INTO myVar;
--row1 and row2 type are integer type
myVar = myVar + (myVar*40)/200;
myVar2 = myVar * $2;
--$2 is an integer argument of function
--other squeryes
END

现在,当我在 INSERT 查询中使用 myVar2 的其余代码时,添加到我的数据库中的值为 0。为什么?看来我的操作是错误的……

【问题讨论】:

  • RoW1&ROW2的初始数据类型是什么?

标签: sql function postgresql stored-procedures


【解决方案1】:

请尝试

SELECT CAST(row1 AS DOUBLE PRECISION)/row2)  
FROM myTable 
WHERE row3 = "value" INTO myVar;

让我知道它是否有效。

问候

阿舒托什·艾莉亚

【讨论】:

  • 如果您发布代码、XML 或数据示例,在文本编辑器中突出显示这些行,然后单击编辑器上的“代码示例”按钮 ({ })工具栏以很好地格式化和语法突出显示它!
  • 作为一个好的规则,当你做这样的事情时,总是明确地转换你的数据类型,最坏的情况是它可以更容易地阅读数据类型。避免错误的最佳情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
相关资源
最近更新 更多