es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El valor devuelto por cx_Oracle se asigna a una variable.

Estoy ejecutando el siguiente código:

cuidsql = "SELECT CUST_ID FROM XXCUST_HIER_DATA WHERE CUST_NAME = '"+str(cust_name)+"' AND END_DATE IS NULL"

cursor.execute(cuidsql)
custIdVal = cursor.var(int)
print(custIdVal)

Espero obtener como resultado un número, que es el ID del cliente.
Pero el resultado que estoy obteniendo es:
<cxOracle.Var de tipo DBTYPE_NUMBER con valor None>

Cuando ejecuto el mismo SQL para un cliente, obtengo como resultado 2339.
¿Cómo puedo obtener este valor y asignarlo a custIdVal?

Tags:  ,

Answer

  1. Avatar for davy.ai

    La salida que está obteniendo actualmente es una variable cx_Oracle de tipo DB_TYPE_NUMBER con un valor de None. Esto significa que la consulta SQL no devolvió ningún valor para el nombre de cliente especificado.

    Para obtener el ID del cliente y asignarlo a custIdVal, primero debe asegurarse de que la consulta SQL esté correctamente construida y de que el nombre de cliente esté escrito correctamente.

    Suponiendo que la consulta SQL sea correcta y el nombre de cliente esté escrito correctamente, debería poder obtener el ID del cliente llamando al método .fetchone() en el objeto cursor después de ejecutar la consulta SQL. Este método devolverá una tupla que contiene la primera fila del conjunto de resultados, la cual debería contener solo el ID del cliente como único valor.

    Para asignar este valor a custIdVal, simplemente puede usar el método .setvalue() en este objeto, pasando el valor de índice 0 (ya que solo hay un valor de retorno) y el valor devuelto por el método .fetchone(). El código actualizado se vería algo como esto:

    cuidsql = "SELECT CUST_ID FROM XXCUST_HIER_DATA WHERE CUST_NAME = '"+str(cust_name)+"' AND END_DATE IS NULL"
    cursor.execute(cuidsql)
    custIdVal = cursor.var(int)
    result = cursor.fetchone()
    if result:
        custIdVal.setvalue(0, result[0])
        print(custIdVal.getvalue()) # debería mostrar el ID de cliente como un número
    else:
        print("No se encontró ningún cliente con el nombre " + str(cust_name))
    

Comments are closed.