SQL Server - Consulta sobre un procedimiento

 
Vista:

Consulta sobre un procedimiento

Publicado por Claudio (9 intervenciones) el 15/03/2005 23:11:50
Hola... bueno... otra y otra vez yo...
Este si que es un problema.....

tengo un procedimiento almacenado que dentro tien 2 procedimientos mas... el primer procedimiento es una consulta... (me funciona... me entrega resultados en el analizador de consultas) los resultados de ese procedimiento los quiero dejar como parametros de entrada para el segundo procedimiento... pero los parametros del primer proced... estan enviando NULL

esto es tremendo!!!! intento aprender y cada vez sale algo más complicado...

bueno... al que lea esto.... que tenga un GRAN DÍA....

P.D.: ahhh... y quiero concatenar 2 parametros para dejarlos en una variable... pero como son NULL ... no pasa nada

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Consulta sobre un procedimiento

Publicado por EnriqueK (47 intervenciones) el 16/03/2005 16:18:54
Como estas recibiendo los parametros el 1er procedimiento??

Atte.
EnriqueK
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta sobre un procedimiento

Publicado por Claudio (1 intervención) el 16/03/2005 17:22:14
tu dedicate hacer otra cosa Enrique.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta sobre un procedimiento

Publicado por Claudio (Original) (9 intervenciones) el 16/03/2005 17:36:16
Hola Enrrique... creo que otro "yo" respondio por mi.. je je je
bueno... se supone que recibe los datos cuando en el procedimiento agrego "output" en la variable... cierto??... bueno eso hago...

quieres que te envie lo que hice para que lo revices???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta sobre un procedimiento

Publicado por EnriqueK (47 intervenciones) el 16/03/2005 19:20:06
Claro enviamelo para revisarlo.

Atte.
EnriqueK
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta sobre un procedimiento

Publicado por Claudio (ORIGINAL) (9 intervenciones) el 16/03/2005 19:48:33
te envío los tres.. ok??
Este es el principal:

CREATE PROCEDURE MOVIMIENTO AS
DECLARE @CODIGO CHAR(10), @DOCU INT, @TOTALDOCU INT, @TOTALPROD INT, @FECHAANO DATETIME, @FECHAMES DATETIME,
@BODEGA CHAR (3), @FECHA DATETIME

EXECUTE SELECCION @CODIGO, @DOCU, @TOTALDOCU, @TOTALPROD, @FECHAANO, @FECHAMES, @BODEGA

SELECT @FECHA = @FECHAANO + @FECHAMES

EXECUTE INSERTAR @CODIGO, @DOCU, @TOTALDOCU, @TOTALPROD, @FECHA, @BODEGA

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta sobre un procedimiento

Publicado por Claudio(ORIGINAL) (9 intervenciones) el 16/03/2005 19:49:59
este es el que me entrega resultados.. pero no los guarda en parametros

CREATE PROCEDURE SELECCION @KOPRCT CHAR(10) OUTPUT, @TIDO VARCHAR (3) OUTPUT, @DOCUMENTO INT OUTPUT, @TOTAL INT OUTPUT, @ANO DATETIME OUTPUT, @MES DATETIME OUTPUT, @BOSULIDO VARCHAR (3) OUTPUT
AS
DECLARE @TOTDOC INT, @TOTPROD INT

SELECT KOPRCT, TIDO, COUNT(TIDO) AS TOTDOC, SUM(CAPRCO1) AS TOTPROD, year(FEEMLI) AS AÑO, month(FEEMLI) AS MES, BOSULIDO
FROM MASTER.RANDOM.dbo.MAEDDO
WHERE FEEMLI BETWEEN '20041001' AND '20050228'
AND LILG IN ('SI','GR') AND TIDO IN ('GRC','GRI','NCV','GRD','GDV') AND BOSULIDO IN ('001','019') AND KOPRCT ='HDMAX08400'
GROUP BY KOPRCT, TIDO, year(FEEMLI), month(FEEMLI), BOSULIDO

SELECT @DOCUMENTO = @TOTDOC
SELECT @TOTAL = @TOTPROD

(KOPRCT es un codigo)

y este es el tercero

CREATE PROCEDURE INSERTAR @CODIGO CHAR(10), @DOCU INT, @TOTALDOCU INT, @TOTALPROD INT,@FECHA DATETIME, @BODEGA CHAR (3)

AS
DECLARE @FLAG CHAR (1)
SELECT @FLAG = 'C'
INSERT INTO SMIN_RESULTADOS
(COD_PROD, FRN_DOCTYPE, QUANTITY_DOC, QUANTITY_PROD, MES_RESULT, FRN_BODEGA, FLAG)
VALUES (@CODIGO, @DOCU, @TOTALDOCU, @TOTALPROD, @FECHA, @BODEGA, @FLAG)

espero que no sea tedioso para ti revizar esto!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta sobre un procedimiento

Publicado por EnriqueK (47 intervenciones) el 16/03/2005 21:42:09
Hola bueno no fue muy tedioso ver tu codigo y ahi veo que en el store de seleccion no le asignas nunca los valores a las variables de salida es por eso que te devuelve null entonces tu store deberia ser :

CREATE PROCEDURE SELECCION
@KOPRCT CHAR(10) OUTPUT,
@TIDO VARCHAR (3) OUTPUT,
@DOCUMENTO INT OUTPUT,
@TOTAL INT OUTPUT,
@ANO DATETIME OUTPUT,
@MES DATETIME OUTPUT,
@BOSULIDO VARCHAR (3) OUTPUT
AS
DECLARE @TOTDOC INT,
@TOTPROD INT

SELECT @KOPRCT = KOPRCT,
@TIDO = TIDO,
@DOCUMENTO = COUNT(TIDO) AS TOTDOC,
@TOTAL = SUM(CAPRCO1) AS TOTPROD,
@ANO = year(FEEMLI) AS AÑO,
@MES = month(FEEMLI) AS MES,
@BOSULIDO = BOSULIDO
FROM MASTER.RANDOM.dbo.MAEDDO
WHERE FEEMLI BETWEEN '20041001' AND '20050228' AND
LILG IN ('SI','GR') AND TIDO IN ('GRC','GRI','NCV','GRD','GDV') AND
BOSULIDO IN ('001','019') AND
KOPRCT ='HDMAX08400'
GROUP BY KOPRCT, TIDO, year(FEEMLI), month(FEEMLI), BOSULIDO

--SELECT @DOCUMENTO = @TOTDOC
--SELECT @TOTAL = @TOTPROD

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta sobre un procedimiento

Publicado por EnriqueK (47 intervenciones) el 16/03/2005 21:42:26
Segundo cuando lo llamas debes especificar que es de salida tu segundo store debe ser asi:

EXECUTE SELECCION @CODIGO output, @DOCU output, @TOTALDOCU output, @TOTALPROD output, @FECHAANO output, @FECHAMES output, @BODEGA output

Eso debe funcionar correctamente y debe arrojarte los resultados.
Ojo que en tu query de seleccion tu le asignas a las variables UN registro y si tu consulta te devuelve mas de uno solo tomara el ultimo registro.

Espero te resulte.

Atte.
EnriqueK
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta sobre un procedimiento

Publicado por Claudio (9 intervenciones) el 16/03/2005 22:02:30
entonces no me va a resultar para lo que quiero....

sabes.. tu te debes haber dado cuenta... necesito insertar en otra tabla de otra base un conjunto de registros... y por cada registro hago una concatenacion de datos.... para ingresarla como un solo campo en la otra tabla....

como puedo hacer eso...

PUCHA... YA ME DA PENA MOLESTARTE TANTO...
en una de esas te puedo devolver el favor con algo... de donde eres??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta sobre un procedimiento

Publicado por EnriqueK (47 intervenciones) el 16/03/2005 22:45:15
Bueno yo lo resumiria asi:

CREATE PROCEDURE MOVIMIENTO
AS
SELECT KOPRCT Codigo,
TIDO Docu,
COUNT(TIDO)AS TotalDoc,
SUM(CAPRCO1) AS TotalProd,
YEAR(FEEMLI) AS ANIO
MONTH(FEEMLI) AS MES
BOSULIDO AS Bodega
INTO #TEMPORAL
FROM MASTER.RANDOM.dbo.MAEDDO
WHERE FEEMLI BETWEEN '20041001' AND '20050228' AND
LILG IN ('SI','GR') AND TIDO IN ('GRC','GRI','NCV','GRD','GDV') AND
BOSULIDO IN ('001','019') AND
KOPRCT ='HDMAX08400'
GROUP BY KOPRCT, TIDO, year(FEEMLI), month(FEEMLI), BOSULIDO

--DECLARE @FLAG CHAR (1)
--SELECT @FLAG = 'C'
INSERT INTO SMIN_RESULTADOS (COD_PROD, FRN_DOCTYPE, QUANTITY_DOC, QUANTITY_PROD, MES_RESULT, FRN_BODEGA, FLAG)
SELECT Codigo, Docu, TotalDocu, @TotalProd, CONVERT(DATETIME,CONVERT(CHAR(4),ANIO) + '/' + CONVERT(CHAR(2),MES) + '/01'), @Bodega, 'C')
FROM #TEMPORAL

Elimine eso la varible @Flag pero la puedes usar si gustas en irrelevante para el caso, espero sirva el codigo q escribi :)
Creo q eso ayuda.

Atte.
EnriqueK
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta sobre un procedimiento

Publicado por EnriqueK (47 intervenciones) el 16/03/2005 22:48:32
Lapsus no es @TotalProd sino simplemente TotalProd igual ocurre con @Bodega debe ser solo Bodega.

Atte.
EnriqueK
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta sobre un procedimiento

Publicado por Claudio (9 intervenciones) el 17/03/2005 18:54:02
Gracias Enrrique eres bueno en esto... y se nota... me resulto a la perfeccion...

pero... je je je quiero declarar una variable de salida que me entregue solo un punto... (caracter) ... cuando termine el proceso.. como lo hago.... lo declaro pero no me entrega nada... puedes darme un ejemplito de como hacerlo??

ahh... GRACIAS.. de verdad...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta sobre un procedimiento

Publicado por EnriqueK (47 intervenciones) el 17/03/2005 19:42:11
Bueno man creo q tu quieres enviar algo como esto

create procedure ....
@Salida char(1) output
as ....

--Si quieres saber si termino bien o mal ejecutas esta sentecia

IF @@error = 0
BEGIN
-- Termino Satisfactoriamente.
SET @Salida = 'T'
END
ELSE
BEGIN
-- No se ejecuto la sentencia, pueden enviar un mensaje de error definido por ti.
SET @Salida = 'F'
END

Para mayor informacion lee sobre el @@error y por ahi te saldra lo de TRANSACTION ... seria bueno tb que lo leas ya que si falla en algo tu conuslta seria bueno asegurarnos de hacer un ROLLBACK.

Espero eso sea lo que me preguntaste, suerte.

Atte.
EnriqueK

PD: ya sabes q para ejecutar tu store con parametros de salida lo haces :

declare @parametroSalida TIPODATO

EXEC NombreStore @parametroSalida output
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar