11/06/2026
📣 Estar atento a las publicaciones
Revista orientada al aprendizaje de lenguaje de programación. 𝗘𝘅𝗰𝗹𝘂𝘀𝗶𝘃𝗼 𝗽𝗮𝗿𝗮 𝗽𝗿𝗶𝗻𝗰𝗶𝗽𝗶𝗮𝗻𝘁𝗲𝘀, 𝗽𝗲𝗿𝘀𝗼𝗻𝗮𝘀 𝘀𝗶𝗻 𝗻𝗶𝗻𝗴𝘂𝗻 𝗰𝗼𝗻𝗼𝗰𝗶𝗺𝗶𝗲𝗻𝘁𝗼 𝗱𝗲 𝗽𝗿𝗼𝗴𝗿𝗮𝗺𝗮𝗰𝗶𝗼𝗻.
Especialidad en desarrollo Backend
11/06/2026
📣 Estar atento a las publicaciones
⛓️Cadenas de textos
🔙RW. ⚙️Estructuras Plsql
🔙RW creando tabla
📍Busca nuestras publicaciones anteriores.
Obtuve más de 130 reacciones en una de mis publicaciones la semana pasada. ¡Gracias a todos por el apoyo! 🎉
01/06/2026
Semanario Técnico: Python + PL/SQL
🏆DÍA 7: Buenas Prácticas y Reto
Lo que separa el código funcional del código profesional
Llegamos al final de la semana. Has recorrido desde cero hasta llamar paquetes PL/SQL completos desde Python. Hoy consolidamos todo con las reglas de oro y tu primer reto.
✅ Las 7 reglas de oro
1️⃣ NUNCA pongas contraseñas en el código → usa variables de entorno (.env).
2️⃣ SIEMPRE usa parámetros bind (:nombre) nunca concatenes SQL.
3️⃣ SIEMPRE cierra conexiones con try/finally o context manager (with).
4️⃣ SIEMPRE maneja excepciones → try/except oracledb.Error.
5️⃣ SIEMPRE commit/rollback explícito en operaciones DML.
6️⃣ Reutiliza conexiones → no abrir/cerrar en cada instrucción.
7️⃣ Documenta tu código con comentarios claros.
🚫 Qué EVITAR definitivamente
❌ SQL concatenado con f-strings → SQL Injection garantizado.
❌ Contraseñas hardcodeadas en el .py → nunca subirlo a GitHub.
❌ Ignorar errores con except: pass → los errores hablan, escúchalos.
❌ Conexiones que nunca se cierran → memory leak y bloqueos en Oracle.
❌ Mezclar lógica de BD con lógica de negocio sin estructura.
💡Qué ENFATIZAR in tu aprendizaje
⭐ Entiende el cursor: es el mensajero entre Python y Oracle.
⭐ Domina los tipos de datos Oracle en Python (NUMBER, STRING, CURSOR).
⭐ Practica con las tablas EMP/DEPT de Oracle → ya las conoces de PL/SQL.
⭐ Prueba primero en SQL Developer, luego traduce a Python.
⭐ Lee el mensaje de error completo → Oracle siempre te dice qué falló.
🏆 RETO DE LA SEMANA
📋 Crea un script Python que:
1. Se conecte a tu BD Oracle.
2. Llame un procedimiento PL/SQL que calcule el salario anual de un empleado.
3. El procedimiento recibe el número de empleado (IN) y devuelve el salario anual (OUT).
4. Python imprime: 'El empleado [nombre] gana [salario] al año'.
5. Maneja el error si el empleado no existe.
Comparte tu solución en el grupo y recibe retroalimentación.
💻 Plantilla para el reto
import oracledb
# --- Plantilla para completar por el estudiante ---
# Reemplaza los datos con tu configuración y desarrolla el bloque del reto
try:
dsn = 'localhost:1521/XE'
with oracledb.connect(user='mi_usuario', password='mi_password', dsn=dsn) as conn:
with conn.cursor() as cur:
# Completa la llamada al procedimiento aquí
# p_salario_anual = cur.var(oracledb.NUMBER)
# cur.callproc('calcular_salario_anual', [7839, p_salario_anual])
pass
except oracledb.Error as e:
print("Error detectado:", e)
31/05/2026
Semanario Técnico: Python + PL/SQL
🎯 DÍA 6: Paquetes, Cursores y Errores
El nivel profesional: REF CURSOR, packages y excepciones
Este es el nivel que diferencia al programador junior del senior. Los paquetes PL/SQL organizan el código, los REF CURSOR devuelven conjuntos de datos, y el manejo de errores hace el sistema robusto.
📦 Llamar procedimientos de un PAQUETE
Sintaxis: cursor.callproc('nombre_paquete.nombre_procedimiento',
[params])
Ejemplo:cur.callproc('PKG_EMPLEADOS.registrar_empleado', [datos])
Funciones de paquete: cur.callfunc('PKG_NOMINA.calcular_salario', tipo,
[params])
El paquete encapsula la lógica → Python solo llama la interfaz pública.
🔄 REF CURSOR → Devolviendo conjuntos de datos
Cuando un procedimiento devuelve múltiples filas, usa REF CURSOR.
En Python: ref_cursor = cur.var(oracledb.CURSOR).
Pasa ref_cursor como parámetro OUT al procedimiento.
Luego itera: for fila in ref_cursor.getvalue(): print(fila).
⚠️ Manejo de errores y transacciones
Usa try/except oracledb.Error para capturar errores de Oracle.
e.args[0].code → código del error ORA- # # .
e.args[0].message → descripción del error.
conn.commit() → confirma cambios; conn.rollback() → revierte.
¡Siempre usar commit/rollback explícito con DML!
Ejemplo: Paquete + REF CURSOR + Manejo de Errores
import oracledb
try:
conn = oracledb.connect(user='usr', password='pwd', dsn='host:1521/XE')
# Llamar procedimiento de paquete que devuelve REF CURSOR
with conn.cursor() as cur:
ref_cursor = cur.var(oracledb.CURSOR)
cur.callproc('PKG_EMPLEADOS.listar_por_depto',
[10, ref_cursor])
# Iterar el cursor devuelto
cursor_resultado = ref_cursor.getvalue()
for fila in cursor_resultado:
print(f'ID: {fila[0]} | Nombre: {fila[1]}')
conn.commit() # Confirmar si hubo cambios
except oracledb.Error as e:
error_obj = e.args[0]
print(f'Error ORA-{{error_obj.code}}: {{error_obj.message}}')
conn.rollback() # Revertir si falla
finally:
conn.close() # Siempre cerrar
📌 Mañana: Resumen general, buenas prácticas y el reto de la semana.
🚀 Sigue la página
👍
| Lunes | 09:00 - 17:00 |
| Miércoles | 09:00 - 17:00 |
| Viernes | 09:00 - 17:00 |