Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-12-2006
mrh_peru mrh_peru is offline
Miembro
 
Registrado: feb 2006
Posts: 21
Poder: 0
mrh_peru Va por buen camino
Migrar Store procedure Interbase a Msq Sql Server 2000

Foro como migrara mis procedimientos almacenados hechos en interbase a ms sql server 2000 y a la vez como llamarlos y extraer los paramtrso de salida desde delphi.

1. Procedeimiento Interbase q me devuelve la fecha del server

CREATE PROCEDURE SIS_FECHA_SERVER
RETURNS (
FECHA_SERVER DATE)
AS
BEGIN
/* Procedure body */
Select CURRENT_DATE From rdb$Database Into :Fecha_Server;
END

2. Procedeimiento Interbase q me devuelve la hora del server

CREATE PROCEDURE SIS_HORA_SERVER
RETURNS (
HORA_SERVER TIME)
AS
BEGIN
SELECT CAST('now' AS TIME) FROM RDB$DATABASE Into :Hora_Server;
/*
SELECT CURRENT_TIME FROM RDB$DATABASE Into :Hora_Server;
Select CURRENT_TIME From rdb$Database Into :Hora_Server;
*/
END

3. Prodemimto que procesa mi stock

CREATE PROCEDURE SP_AL_ACTUALIZAR_STOCK (
PCOD_AGE CHAR(3),
PCOD_ALM CHAR(3),
PCOD_ART CHAR(8),
PSUMA CHAR(1),
PCANTIDAD NUMERIC(8,2),
PSERIE CHAR(20))
RETURNS (
ROK CHAR(1))
AS
DECLARE VARIABLE VSTOCK NUMERIC(8,2);
DECLARE VARIABLE VSERIE CHAR(1);
begin
VSTOCK = 0 ;
ROK = 'S' ;
EXECUTE PROCEDURE SP_AL_VER_STOCK(:PCOD_AGE,:PCOD_ALM,:PCOD_ART)
RETURNING_VALUES (:VSTOCK);
IF ( :PSUMA = 'S' ) THEN
BEGIN
IF (:VSTOCK = -1) THEN
BEGIN
VSTOCK = :PCANTIDAD ;
INSERT INTO AL_STOCK
(COD_AGE,COD_ALM,COD_ART,STOCK)
VALUES
(:PCOD_AGE,:PCOD_ALM,:PCOD_ART,:VSTOCK) ;
END
ELSE
BEGIN
VSTOCK = :VSTOCK + :PCANTIDAD ;
UPDATE AL_STOCK STK
SET STK.STOCK = :VSTOCK
WHERE STK.cod_age = :PCOD_AGE AND STK.cod_alm = :PCOD_ALM AND STK.cod_art = cod_art ;
END
/* SERIES */
vserie='N' ;
SELECT ART.SERIE
FROM al_articulos ART
WHERE ART.cod_age = :PCOD_AGE AND ART.cod_art = cod_art
INTO :VSERIE ;
if (:vserie='S') then
begin
INSERT INTO AL_STOCK_SERIE
(COD_AGE,COD_ALM,COD_ART,STOCK,SERIE)
VALUES
(:PCOD_AGE,:PCOD_ALM,:PCOD_ART,1,:PSERIE) ;
end
END
IF ( :PSUMA = 'N' ) THEN
BEGIN
IF (:VSTOCK >= :PCANTIDAD ) THEN
BEGIN
IF (:VSTOCK > 0) THEN
BEGIN
VSTOCK = :VSTOCK - :PCANTIDAD ;
UPDATE AL_STOCK STK
SET STK.STOCK = :VSTOCK
WHERE STK.cod_age = :PCOD_AGE AND STK.cod_alm = :PCOD_ALM AND STK.cod_art = cod_art ;

/* SERIES */
vserie='N' ;
SELECT ART.SERIE
FROM al_articulos ART
WHERE ART.cod_age = :PCOD_AGE AND ART.cod_art = cod_art
INTO :VSERIE ;
if (:vserie='S') then
begin
UPDATE AL_STOCK_SERIE STS
SET STS.stock = STS.stock - :PCANTIDAD
WHERE STS.cod_age = :PCOD_AGE AND
STS.cod_alm = :PCOD_ALM AND
STS.cod_art = cod_art AND
STS.SERIE = serie ;
end
END
ELSE
BEGIN
ROK = 'N' ;
END
END
ELSE
BEGIN
ROK = 'N' ;
END
END

end

4.- Procemimiento que me devuelve mi stock

CREATE PROCEDURE SP_AL_VER_STOCK (
PCOD_AGE CHAR(3),
PCOD_ALM CHAR(3),
PCOD_ART CHAR(8))
RETURNS (
RSTOCK NUMERIC(8,2))
AS
begin
SELECT STK.stock
FROM AL_STOCK STK
WHERE STK.cod_age = :PCOD_AGE AND STK.cod_alm = :PCOD_ALM AND STK.cod_art = :PCOD_ART
INTO :RSTOCK ;
IF (:RSTOCK IS NULL ) THEN
BEGIN
RSTOCK = -1 ;
END
end

Por favot si no fuera mucha molestia, a la como los llamaria y recuperaria los valores de retorno.

Gracias por su atencion....
Responder Con Cita
  #2  
Antiguo 09-12-2006
mrh_peru mrh_peru is offline
Miembro
 
Registrado: feb 2006
Posts: 21
Poder: 0
mrh_peru Va por buen camino
Solucion : Utilizar Cursores

Asi es encontre la solucion, me queria ahorrar tiempo , pero al final tuve que leere y leyendo se aprende si no como...., bueno la respuesta para mi pregunta pknateada es utilizar cursores , para el barrido del select y los procesos respectivos.... Salu2 foro
Responder Con Cita
Respuesta



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
Mejorar la Velocidad de Un Store Procedure(InterBase) BuenaOnda Conexión con bases de datos 2 10-08-2006 00:22:15
Store procedure php jorgito MySQL 1 06-06-2006 08:55:12
Store Procedure Delphi - SQL 2000 thecarlos MS SQL Server 4 15-07-2004 20:17:47
store procedure ronimaxh Firebird e Interbase 2 24-06-2003 20:20:22
un Store Procedure de Sql 2000 y Delphi 5.0 Sandochan Conexión con bases de datos 1 23-05-2003 00:20:26


La franja horaria es GMT +2. Ahora son las 22:30:02.


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