首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >命令的意外结束-第1行,列532676549 (在Firebird2.5中有execute语句)

命令的意外结束-第1行,列532676549 (在Firebird2.5中有execute语句)
EN

Stack Overflow用户
提问于 2015-09-14 16:58:28
回答 1查看 2.3K关注 0票数 1

我对存储过程中的execeute语句有一个问题,我找不出它,我在一个变量中尝试查询文本,在异常中显示它,以查看它是否正常,复制并执行它和worket,但是在execute语句中我得到了同样的错误“命令的意外结束--第1行,第532676549列”。

代码语言:javascript
复制
execute statement 'insert into rep_balancediario(id_rep_balancediario,id_plancuenta,id_saldocontable,nivel,codigoreducido,
        SALDOANTERIOR,CREDITO,DEBITO,SALDODIA, cuentacontable,imputable,id_moneda,contracuenta,saldocontabledes,ID_SUCURSALAGENCIA)
        values(gen_id(id_rep_balancediario,1),'||:v_id_PlanCuenta||','||:V_NROSALDOCONTABLE||','||:v_Nivel||',"'||:v_CodigoReducido||'",'||
        :V_SALDOANTERIORMN||','||:V_CREDITOMN||','||:V_DEBITOMN||','||:v_resultadosaldoactual||',"'||cast(:v_CuentaContable as VARCHAR(11))||'","S",'
        ||:v_nromoneda||',
        "'||cast(:v_contracuenta as VARCHAR (11))||'","'||cast(:V_DESSALDOCONTABLE as VARCHAR(255))||' >'||cast(:v_des_suc as varchar(100))||'",'
        ||:VE_IDSUCURSALAGENCIA||')'
       --:V_str_sql
       with AUTONOMOUS TRANSACTION; 

有人知道这个问题会带来什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-15 09:49:36

意外的命令结束通常意味着解析器在仍然期待令牌时到达语句的末尾,或者到达解析器状态,在那里应该完成,但仍然有标记。将值连接到查询中的事实是一个红旗。此外,“列532676549”可能是问题的指示,因为这超过了查询长度限制(在Firebird2.5和更早版本中为64k),并且还表明您的文本大于支持值(32k)。

语句支持参数化查询。:使用它。我建议您将查询重写为参数化查询,并查看该查询是否有效,例如:

代码语言:javascript
复制
execute statement ('insert into aTable (column1, column2) values (?, ?)') (aVariable, 'literal');

代码语言:javascript
复制
execute statement ('insert into aTable (column1, column2) values (:var1, :var2)') (var1 := aVariable, var2 := 'literal');

我还看到您的查询包含双引号,其中我希望使用单引号,这意味着您使用了不推荐的方言1,这带来了另一组潜在的问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32570039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档