Python类型'exceptions.ValueError' - 不支持的格式字符

时间:2015-08-21 23:17:54

标签: python format

任何人都可以帮我弄清楚我的代码有什么问题吗?我认为它有某种字符替换,但我不知道是什么。

def diagnose(*arg, **kwargs):
import cx_Oracle
import traceback
try:
    def ativa_dbms():
        while True:
            lineVar = cursor.var(cx_Oracle.STRING)
            statusVar = cursor.var(cx_Oracle.NUMBER)
            cursor.callproc("dbms_output.get_line", (lineVar, statusVar))
            if statusVar.getvalue() != 0:
             break
            print lineVar.getvalue()

    query_diag="""
                declare
                  vContrato  sn_contrato.num_contrato%type := :P_CONTRATO;
                  vCid       sn_contrato.cid_contrato%type := :P_CID_CONTRATO;
                  vPonto     sn_rel_ponto_produto.id_ponto%type := :P_ID_PONTO;
                  vCont      number := 0;
                  vStatus    number := 0;
                  vTpProduto number := 0;

                begin

                  select count(id_caracteristica)
                    into vTpProduto
                    from sn_rel_ponto_produto a, sn_produto b
                   where a.id_produto = b.id_produto
                     and a.num_contrato = vContrato
                     and a.cid_contrato = vCid
                     and a.id_ponto = vPonto
                     and a.dt_fim > sysdate
                     and b.id_caracteristica = 4;

                    dbms_output.put_line('Qtd produto netfone no ponto: '||vTpProduto);

                  if vTpProduto = 4 then
                    select count(*)
                      into vCont
                      from sn_telefone_voip
                     where id_ponto = vPonto
                       and num_contrato = vContrato
                       and cid_contrato = vCid;

                    if vCont = 0 then
                      dbms_output.put_line('Ponto nao possui linhas na sn_telefone_voip');
                      vStatus := 1;
                    end if;

                  end if;
                  select vStatus into :p_status from dual;

                end;
              """

    con = arg[0]
    cursor = con.cursor()
    kwargs['P_STATUS'] = cursor.var(cx_Oracle.NUMBER)

    print 'Iniciando diagnostico...'
    #cursor.callproc("dbms_output.enable")
    cursor.execute(query_diag, kwargs)
    #ativa_dbms()
    status = kwargs['P_STATUS'].getvalue()
    cursor.close()
    con.close()
    return status, kwargs
except traceback, tb:
    print traceback.tb_lineno(tb)

错误       - 索引87处不支持的格式字符't'(0x74)

通过将%%而不是%放在'query_diag'

中的字符来解决

0 个答案:

没有答案