Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-05-2006
Avatar de Paoti
Paoti Paoti is offline
Miembro
 
Registrado: may 2003
Ubicación: Monterrey. N.L., México
Posts: 612
Poder: 21
Paoti Va por buen camino
Uso de SUSPEND; Solo cuando el SP devuelve valores

¡Hola! compañeros.



Tengo una grandisima duda, que no he tenido tiempo de hacer pruebas, por andar con otros motores de bases de datos



Quisiera preguntarles esto.

Que solamente lo he usado en pruebas de escritorio el uso de SP desde Firebird por repetición sin saber el porque.


¿La Sentencia SUSPEND que uso tiene en un Stored Procedure?.
¿Indica un COMMIT?
¿Que se haga una pausa en el servidor de DB para que se actualize algo?
¿Tiene que ir al final del Procedimiento Almacenado o antes de una sentencia que aborta el Procedimiento Almacenado?

o como dice este link: (Que aparte es muy bueno "COMO CREAR UN PROCEDIMIENTO ALMACENADO")
si es un procedure que no devuelve nada solo ejecuta o sea no tiene suspend
http://clubdelphi.com/foros/showthre...spend+firebird.



Gracias por su apoyo.


SELECT "MUCHAS GRACIAS" FROM DUAL;
__________________
Estudia y anda en la calle.... que asi serás el doble de listo que los demás...

análisis de información
análisis y diseño de sistemas

Paoti Rios Reséndiz
Responder Con Cita
  #2  
Antiguo 27-05-2006
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Hola Paoti

Primero que nada te diré que en Firebird/Interbase existen dos tipos de procedimientos:
  • Procedimientos ejecutables .- Son llamados directamente por una aplicación mediante la sentencia EXECUTE PROCEDURE. Pueden ser utilizados para realizar una serie de tareas.
  • Procedimientos select .- Pueden ser tratados de forma similar a una tabla o vista en una sentencia SELECT. Devuelven un conjunto de valores contenidos en uno o más renglones.

Para responder a tu pregunta te pongo un ejemplo de los procedimientos tipo select.

Código SQL [-]
CREATE PROCEDURE get_emp_proj2 (v_empno SMALLINT)
  RETURNS (line_no integer, _project_id CHAR(5))
AS
BEGIN
  line_no = 0;
  FOR SELECT proj_id
     FROM Employee_project
     WHERE emp_no = :v_ empno
    INTO :_project_id
  DO
  BEGIN
    line_no = line_no+1;
    SUSPEND;
  END
END

Para llamarlo se usa una sentencia como esta:

Código SQL [-]
  SELECT * FROM get_emp_proj2(71);

Resultado

LINE_NO PROJECT_ID
=========== ==========
            1 VBASE
            2 MAPDB

Como puedes observar el uso de la sentencia FOR SELECT...DO dentro del procedimiento permite que su comportamiento sea similar a una tabla al llamarlo con la sentencia SELECT.

Por otra parte, la sentencia SUSPEND detiene la execución del procedimiento para devolver los valores, es decir, cuando quieres enviar todo un renglón a la aplicación que lo ha llamado.

Puedes hacer una serie de operaciones con las variables y cuando hayas obtenido el resultado que deseas entonces utilizas SUSPEND para devolver el resultado, observa en el ejemplo la variable line_no, una vez que se ha calculado se envia el resultado con SUSPEND.

Espero que sea útil, saludos.

Última edición por Héctor Randolph fecha: 27-05-2006 a las 08:20:18.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Manejo de valores cuando cambia checkbox de un dbgrid JavierO Tablas planas 0 15-07-2005 23:27:31
win2k Server y modo Suspend Delfino Windows 1 18-04-2005 14:13:38
GetUserDefaultLCID... que recondenados devuelve?? Anabel Varios 1 27-09-2004 21:13:11
Como cargar los forms solo cuando los necesite? TURING Varios 2 21-08-2004 20:39:43
Cuando trabajan dos usuarios simultaneos solo graba la factura de uno tulio Firebird e Interbase 11 28-10-2003 13:10:34


La franja horaria es GMT +2. Ahora son las 04:21:10.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi