Hola Carlos Osoria,
Permiteme participar en esta platica con lo siguiente:
1. Tienes razon al descontento de que los argumentos del grupo de administradores son algo flojos o no bien explicados
2. Yo tambien he programado en C#, y creeeme que no soy partidiario de "SQL Plain Queries" en el codigo fuente, no es una buena practica
3. Es mejor llamar una API, usando JSON en la cual por un metodo POST o GET obtienes tu recordset de manera transparente
4. En el caso de que no sea una aplicacion WEB, las llamadas a Stored Proc, son la mejor via.
Respecto a los IF ... eso que comentas que hacen los progranadores de SQL, se llama LAZYNESS (flojera)
porque?
Porque es mas facil llamar a un procedimieto ya hecho por una funcion que volver a crear el codigo...
Contra: aja y la reusabilidad ? ... recurre a la modularizacion Packages (en Oracle si, pero en SQL Server?)
En SQL server no es posible tener packages, pero se puede simular creando un schema dedicated user "Sales" por ejemplo contiene todas las funciones y procedimientos para el bussines logic de "Sales".
En terminos practicos, nunguna llamada anidada, debe superar el nivel 3 ... para evitar el spaguetti code.
es decir, ejemplo:
IF sales_amout < 30000 and period = "monthly" THEN --(nivel 1)
EXEC sp_lowsalesmarge(id_user);
...
dentro de "sp_lowsalesmarge"
If id_user <> "el Lamebotas" then --(Nivel 2)
EXEC sp_awarebossLowPerformanceof(id_user)
...
dentro de "sp_awarebossLowPerformanceof"
IF id_user = "La chica mas sexy" then --(nivel 3)
Exec Forgive_SalesPerson(id_user)
Else
Exec Send_WarningToSalesPerson(id_user )
...dentro de "Send_WarningToSalesPerson(id_user)"
IF id_user = "Godinez" and warnings_received > 3 then --nivel (4)
exec kick_agent(id_iser)
----------- (espero que hayan disfrutado el ejemplo)
Si el citado ejemplo es la manera de programar de los Administradores ... ufff... pobres de ellos, olvidate, solo enviales el warning cuando su codigo no de la informacion correcta.
...
Tu como programador de .NET application, solo debes preocuparte por la representacion de los datos y que ellos (los DBA)se arreglen con la logica interna
Los procedimientos al estar COMPILADOS, corren mas rapido que queries que el DBMS tiene que interpretar y crear el plan de ejecucion por cada invocacion, eso es cierto!.
Pero el performance es algo con lo que los DBA deben lidiar, creando la mejor estructura de datos (digase Tablas o vistas almacenadas), Indices, referencias y triggers.
Saludos cordiales a todos :)