Revista "Aprende Fácil a Programar"

Revista "Aprende Fácil a Programar"

Compartir

Revista orientada al aprendizaje de lenguaje de programación. 𝗘𝘅𝗰𝗹𝘂𝘀𝗶𝘃𝗼 𝗽𝗮𝗿𝗮 𝗽𝗿𝗶𝗻𝗰𝗶𝗽𝗶𝗮𝗻𝘁𝗲𝘀, 𝗽𝗲𝗿𝘀𝗼𝗻𝗮𝘀 𝘀𝗶𝗻 𝗻𝗶𝗻𝗴𝘂𝗻 𝗰𝗼𝗻𝗼𝗰𝗶𝗺𝗶𝗲𝗻𝘁𝗼 𝗱𝗲 𝗽𝗿𝗼𝗴𝗿𝗮𝗺𝗮𝗰𝗶𝗼𝗻.

Especialidad en desarrollo Backend

11/06/2026

📣 Estar atento a las publicaciones

09/06/2026

⛓️Cadenas de textos

09/06/2026

🔙RW. ⚙️Estructuras Plsql

08/06/2026

🔙RW creando tabla

08/06/2026

📍Busca nuestras publicaciones anteriores.

08/06/2026

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.

30/05/2026

🚀 Sigue la página
👍

¿Quieres que tu escuela/facultad sea el Escuela/facultad mas cotizado en Santo Domingo?

Haga clic aquí para reclamar su Entrada Patrocinada.

Localización

Categoría

Dirección

Santo Domingo
1115

Horario de Apertura

Lunes 09:00 - 17:00
Miércoles 09:00 - 17:00
Viernes 09:00 - 17:00