【问题标题】:TM1 : Error :Incorrect syntax Near '|' (inserting numeric value into sql query)TM1:错误:'|'附近的语法不正确(将数值插入 sql 查询)
【发布时间】:2020-09-03 08:26:02
【问题描述】:

我正在尝试将数值变量“Value”插入到十进制数据库列中。

我使用了这个查询语法:

SQL= 'INSERT INTO DB_Archive VALUES ( '''| dim1|''' , '''| dim2|''', '|Value|') ';

但似乎声明数字列的方法不正确,这给了我这个错误:

Error : Incorrect syntax Near '|'

然后我尝试将数值转换为这样的字符串值:

zAmoun= NumberToString(Value);
SQL= 'INSERT INTO DB_Archive VALUES ( '''| dim1|''' , '''| dim2|''', '''|StringToNumber(zAmount)|''') ';

但这是一个糟糕的举动,因为它在编译中工作并且没有返回任何错误,但在执行中它在这里返回此错误,因为表列是小数:

Error : Error Converting data Type varchar to numeric

如果有人可以帮助我知道在 sql 查询中声明数字列的正确语法是什么,我会很高兴,因为第一个声明不起作用。

非常感谢。

【问题讨论】:

    标签: ssas business-intelligence cognos cognos-10 cognos-tm1


    【解决方案1】:

    也许这些信息可以帮助你:

    开头:请不要以大写开头的变量名。制作类似 vSQL 或 sqlRequest 的东西。

    您尝试使用字符串构建 SQL 命令。孔字符串不能包含数字。 TM1 对它非常严格。每个数字都必须转换为字符串。

    vsValue = NumberToString(value);
    vsSQL= 'INSERT INTO DB_Archive VALUES ( '''| dim1|''' , '''| dim2|''', '''|vsValue|''') ';
    

    也许您的 SQL-Target 需要特定形式的值。例如,使用“,”作为小数分隔符。因此,您可以使用命令NumberToStringEx()

    vsValue = NumberToStringEx(value, '0.0####', ',', '.');
    vsSQL= 'INSERT INTO DB_Archive VALUES ( '''| dim1|''' , '''| dim2|''', '''|vsValue|''') ';
    

    here you find additional information

    如果值是数字或字符串,您将使用引号为您的 sql-target 提供信息。所以也许有必要删除引号:

    vsValue = NumberToString(value);
    vsSQL= 'INSERT INTO DB_Archive VALUES ( '''| dim1|''' , '''| dim2|''', '|vsValue|') ';
    

    【讨论】:

      猜你喜欢
      • 2013-12-15
      • 2017-02-26
      • 1970-01-01
      • 1970-01-01
      • 2014-03-15
      • 1970-01-01
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多