任何人都可以帮我弄清楚我的代码有什么问题吗?我认为它有某种字符替换,但我不知道是什么。
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'
中的字符来解决