Cita:
Empezado por poliburro
Pero eso no es agregar código adicional? Mysql y MsSql por ejemplo tu haces un
Código SQL [-]
Select Campo1,Campo2,..,CampoN
from tabla
where criterio = ValParam1 or
criterio = valParam2
y eso obtienes al ejecutr el SP con lo que no requieres de un suspend o fetch etc...
En oracle y Db2 al contrario debes delcarar como un cursor el recordset que deseas dar como salida del SP pero al final con un mero Open CurName obtienes la salida del sp...
Entonces.. déjame ver si entiendo bien, En Firebird debes hacer todo ese código para poder dar salida a un simple resultset en un SP?
|
Hola, creo que uno de las mayores virtudes que creo no tienen otros motores es que se puede tratar un procedimiento almacenado como una tabla virtual y trabajar con ellos conforme si lo fuesen. El ejemplo que se ha puesto es muy simple y habría que ver como se hace un proceso complejo en otros motores para poder valorar si se necesita o no más código.
No es lo mismo devolver un cursor, que el propio procedimiento sea un cursor.
Select *
From procedimiento(
aram1,
aram2,..., : paramN )
Un procedimiento no se realiza para sustituir un simple select como en el caso que has puesto, su objetivo es realizar un procesamiento más o menos complejo, donde pueden intervenir consultas de varias tablas y operaciones más o menos complejas con los datos obtenidos de ellas, por ejemplo. Una de sus funciones es no es sustituir un simple select. Y el resultado de todo ello es un conjunto de registros que puedes tratar como una tabla.
Quizá podrías mostrar como devolver un recordset con características similares en sqlserver, mysql u oracle para poder comparar realmente si es más o menos complejo, porque no creo que se pueda comparar el select que has puesto como ejemplo con el procedimiento almacenado que se ha escrito.