SQL Parse Error:使用firebird预期的参数名称

时间:2016-06-06 14:46:16

标签: firebird

我在firebird中使用脚本:

SET TERM ^ ;
execute block as
declare a_cursor CURSOR FOR(select contaSelect.cdcontacontabil, spedcontavincSelect.nuversao, spedcontavincSelect.cdcontasped
from ectbconta contaSelect join ectbspedcontavinc spedcontavincSelect on contaSelect.cdempresa=spedcontavincSelect.cdempresa and contaSelect.cdconta=spedcontavincSelect.cdconta where contaSelect.cdempresa = 1);
​
declare variable contacontabil varchar(40);
declare variable versao integer;
declare variable contasped integer;
​
begin
    open a_cursor;

    while(1=1) do
    begin
        fetch a_cursor INTO contacontabil, versao, contasped;
        if (row_count = 0) then leave;
        insert into ectbspedcontavinc (cdempresa, cdconta, nuversao, cdcontasped)
        select contaInsert.cdempresa, contaInsert.cdconta, :versao, :contasped from ectbconta contaInsert 
        where contaInsert.cdcontacontabil =:contacontabil and contaInsert.cdempresa in(2, 3,  4)
        and not exists (select * from ectbspedcontavinc spedcontavincInsert 
            where spedcontavincInsert.cdempresa=contaInsert.cdempresa and spedcontavincInsert.cdconta=contaInsert.cdconta and spedcontavincInsert.nuversao=:versao and spedcontavincInsert.cdcontasped=:contasped);
    end
end
^
​
SET TERM ; ^
​
COMMIT WORK;

发出此消息:

  

错误讯息:
  ---------------------------------------- SQL分析错误:

     

预期的参数名称

     

D:\ Java \ Firebird_2_5 \ bin> isql.exe -z ISQL版本:WI-V2.5.5.26952   Firebird 2.5使用CONNECT或CREATE DATABASE指定数据库SQL>

我不知道该做什么。

public class CriaScriptSpedContaVincService {

private static final Integer GRUPO_EMPRESA_CTB = 3;
private static final Integer CD_EMPRESA_CONSOLIDADORA = 102;

public void criaCriaScriptSpedContaVinc() {
    StringBuilder script = new StringBuilder();
    IContabEmpresa contabEmpresa = new ContabEmpresaProvider();
    List<Integer> empresas = contabEmpresa.retornaEmpresasDoGrupoContabil(GRUPO_EMPRESA_CTB);
    for (Integer cdEmpresa : empresas) {
        script.append("INSERT INTO ECTBSPEDCONTAVINC (CDEMPRESA, CDCONTA, NUVERSAO, CDCONTASPED) ");
        script.append("SELECT ");
        script.append(cdEmpresa);
        script.append(" AS CDEMPRESA, C.CDCONTA, C.NUVERSAO, C.CDCONTASPED ");
        script.append("FROM ECTBSPEDCONTAVINC C WHERE C.CDEMPRESA = ");
        script.append(CD_EMPRESA_CONSOLIDADORA);
        script.append(" AND NOT EXISTS (SELECT * FROM ECTBSPEDCONTAVINC CV WHERE CV.CDEMPRESA = ");
        script.append(cdEmpresa);
        script.append(" AND CV.CDCONTA = C.CDCONTA);");
        script.append(TextUtil.NOVA_LINHA);
    }
    String caminhaCompletoArquivo = "t:/xande/script2.sql";
    FileUtil.escreveArquivo(script, caminhaCompletoArquivo);
    System.out.println("Fechou mano... ;)");
}

}

0 个答案:

没有答案