Para preparar y ejecutar una sentencia de SQL que incluya la entrada de variables, utilice las funciones
ibm_db.prepare, ibm_db.bind_param e ibm_db.execute. Preparar una sentencia mejora el rendimiento porque el servidor de bases de datos crea un plan de acceso optimizado para la recuperación de datos que puede reutilizar si se vuelve a ejecutar la sentencia.
Procedimiento
Para preparar y ejecutar una sentencia de SQL que incluye marcadores de parámetro:
- Llame a la función ibm_db.prepare, pasando los argumentos listados:
- conexión
- Un recurso de conexión de base de datos válido devuelto por la función ibm_db.connect o ibm_db.pconnect.
- sentencia
- Una serie que contiene la sentencia de SQL, incluidos los signos de interrogación (?), como marcadores de parámetro para los valores de columna o predicado que requieran entrada de variables. Esta serie puede incluir una expresión XQuery a la que llama la función XMLQUERY.
- opciones
- Opcional: Un diccionario que especifica el tipo de cursor que debe devolverse para conjuntos de resultados. Puede utilizar este parámetro para solicitar un cursor desplazable para servidores de bases de datos que admitan este tipo de cursor. Por omisión, se devuelve un cursor de sólo avance.
Si la llamada de función tiene éxito, devuelve un recurso de descriptor de contexto de sentencia que puede utilizar en llamadas de función posteriores relacionadas con la consulta.
Si la llamada de función falla (devuelve False), puede utilizar la función ibm_db.stmt_error o ibm_db.stmt_errormsg para recuperar información de diagnóstico sobre el error.
- Opcional: Por cada marcador de parámetro en la serie de SQL, llame a la función ibm_db.bind_param,
proporcionando los argumentos listados. Vincular valores de entrada a marcadores de parámetros garantiza que cada valor de entrada se trate como un único
parámetro, evitando ataques de inyección de SQL.
- sentencia
- La sentencia preparada que devuelve la llamada a la función ibm_db.prepare.
- número_parámetro
- Un entero que representa la posición del marcador de parámetro en la sentencia de SQL.
- variable
- Valor que se debe utilizar en lugar del marcador de parámetro.
- Llame a la función ibm_db.execute, pasando los argumentos listados:
- sentencia
- Una sentencia preparada que devuelve ibm_db.prepare.
- parámetros
- Una tupla de parámetros de entrada que coinciden con los
marcadores de parámetro contenidos en la sentencia preparada.
Para obtener más información sobre la API ibm_db,
consulte http://code.google.com/p/ibm-db/wiki/APIs.
Ejemplo
Preparar y ejecutar una sentencia que incluye entrada de variables.
import ibm_db
conn = ibm_db.connect("database","username","password")
sql = "SELECT EMPNO, LASTNAME FROM EMPLOYEE WHERE EMPNO > ? AND EMPNO < ?"
stmt = ibm_db.prepare(conn, sql)
max = 50
min = 0
# Vincular explícitamente los parámetros
ibm_db.bind_param(stmt, 1, min)
ibm_db.bind_param(stmt, 2, max)
ibm_db.execute(stmt)
# Procesar resultados
# Invocar de nuevo sentencia preparada usando parámetros vinculados dinámicamente
param = max, min,
ibm_db.execute(stmt, param)
Qué hacer a continuación
Si la sentencia de SQL devuelve uno o varios conjuntos de resultados, puede empezar a captar filas del recurso de sentencia.