URGENTE
Publicado por dudas (1 intervención) el 21/08/2006 18:50:54
Oye espero que me apoyes en esta consulta puesto que es muy
importante para mi.......
para terminar mi proyecto.......
Espero prontas noticias tuyas....
Mira tengo este procedimiento en SQlServer......
*****************************************************************************
ALTER PROCEDURE SP_ConcatenarEmailPorIdGrupo
(@IDGRUPO INT)
AS
DECLARE
@IDGRUPOEMAIL INT,@EMAIL VARCHAR(256),@EMAILR VARCHAR(256),
@CORREOSP VARCHAR(1024),@CORREOSS VARCHAR(1024)
SET @CORREOSP =''
SET @CORREOSS =''
IF EXISTS (select * from dbo.sysobjects wherE TYPE ='U' AND
NAME='TABLA_TEMPORAL' )
BEGIN
DROP TABLE TABLA_TEMPORAL
END
CREATE TABLE TABLA_TEMPORAL
( IDGRUPOEMAIL INT ,EMAIL VARCHAR(1024), EMAILR VARCHAR(1024))
DECLARE PRUEBA CURSOR FOR
SELECT DET.IDGRUPOEMAIL,CLI.EMAIL,CLI.EMAILR
FROM DETALLEGRUPOEMAIL DET, CLIENTES CLI
WHERE DET.IDGRUPOEMAIL = @IDGRUPO
AND DET.IDCLIENTE = CLI.IDCLIENTE
OPEN PRUEBA
FETCH PRUEBA INTO @IDGRUPOEMAIL,@EMAIL,@EMAILR
BEGIN
WHILE(@@FETCH_STATUS = 0 )
BEGIN
SET @CORREOSP = @CORREOSP + @EMAIL + ','
SET @CORREOSS = @CORREOSS + @EMAILR + ','
FETCH PRUEBA INTO @IDGRUPOEMAIL,@EMAIL,@EMAILR
END
SET @CORREOSP = SUBSTRING(@CORREOSP,1,LEN(@CORREOSP)-1)
SET @CORREOSS = SUBSTRING(@CORREOSS,1,LEN(@CORREOSS)-1)
INSERT INTO TABLA_TEMPORAL VALUES(@IDGRUPO,@CORREOSP,@CORREOSS)
END
SELECT * FROM TABLA_TEMPORAL
CLOSE PRUEBA
DEALLOCATE PRUEBA
******************************************************************************
Quiero pasarlo a ORACLE pero ahi esta el problema, creo que me estoy
equivocando en la sintaxis
******************************************************************************
En Oracle trate de hacerlo asi.........
****************************************************************************
CREATE OR REPLACE PROCEDURE SP_CONCATENAREMAILPORGRUPO
(IDGRUPO IN NUMBER)
IS
IDGRUPOEMAIL NUMBER;
EMAIL VARCHAR2(256);
EMAILR VARCHAR2(256);
CORREOSP VARCHAR2(1024);
CORREOSS VARCHAR2(1024);
NAME VARCHAR(50);
SELECT TABLE_NAME INTO NAME FROM DBA_TABLES WHERE
TABLE_NAME='TABLA_TEMPORAL';
IF NAME = '' THEN
DROP TABLE TABLA_TEMPORAL;
END IF;
CREATE TABLE TABLA_TEMPORAL
( IDGRUPOEMAIL NUMBER ,EMAIL VARCHAR2(1024), EMAILR VARCHAR2(1024));
CURSOR PRUEBA IS
SELECT DET.IDGRUPOEMAIL,CLI.EMAIL,CLI.EMAILR
FROM DETALLEGRUPOEMAIL DET, CLIENTES CLI
WHERE DET.IDGRUPOEMAIL = IDGRUPO
AND DET.IDCLIENTE = CLI.IDCLIENTE;
BEGIN
OPEN PRUEBA;
CORREOSP := '';
CORREOSS := '';
NAME :='';
LOOP
FETCH PRUEBA INTO IDGRUPOEMAIL,EMAIL,EMAILR;
EXIT WHEN PRUEBA%NOTFOUND;
BEGIN
CORREOSP := CORREOSP + EMAIL + ',' ;
CORREOSS := CORREOSS + EMAILR + ',' ;
END;
END LOOP;
CORREOSP := SUBSTR(CORREOSP,1,LENGTH(CORREOSP)-1);
CORREOSS := SUBSTR(CORREOSS,1,LENGTH(CORREOSS)-1);
INSERT INTO #TABLA_TEMPORAL VALUES(IDGRUPO,CORREOSP,CORREOSS);
CLOSE PRUEBA;
SELECT * FROM #TABLA_TEMPORAL;
END;
*****************************************************************************
el problema es el sgte en las lineas CREATE TABLE,DROP TABLE
CREATE OR REPLACE PROCEDURE XXXX
IS
BEGIN
CREATE TABLE PRUEBA(COD NUMBER,NOMBRE VARCHAR2(50));
END;
*************************************************************************
me sale error.....
Por favor espero una sugerencia
importante para mi.......
para terminar mi proyecto.......
Espero prontas noticias tuyas....
Mira tengo este procedimiento en SQlServer......
*****************************************************************************
ALTER PROCEDURE SP_ConcatenarEmailPorIdGrupo
(@IDGRUPO INT)
AS
DECLARE
@IDGRUPOEMAIL INT,@EMAIL VARCHAR(256),@EMAILR VARCHAR(256),
@CORREOSP VARCHAR(1024),@CORREOSS VARCHAR(1024)
SET @CORREOSP =''
SET @CORREOSS =''
IF EXISTS (select * from dbo.sysobjects wherE TYPE ='U' AND
NAME='TABLA_TEMPORAL' )
BEGIN
DROP TABLE TABLA_TEMPORAL
END
CREATE TABLE TABLA_TEMPORAL
( IDGRUPOEMAIL INT ,EMAIL VARCHAR(1024), EMAILR VARCHAR(1024))
DECLARE PRUEBA CURSOR FOR
SELECT DET.IDGRUPOEMAIL,CLI.EMAIL,CLI.EMAILR
FROM DETALLEGRUPOEMAIL DET, CLIENTES CLI
WHERE DET.IDGRUPOEMAIL = @IDGRUPO
AND DET.IDCLIENTE = CLI.IDCLIENTE
OPEN PRUEBA
FETCH PRUEBA INTO @IDGRUPOEMAIL,@EMAIL,@EMAILR
BEGIN
WHILE(@@FETCH_STATUS = 0 )
BEGIN
SET @CORREOSP = @CORREOSP + @EMAIL + ','
SET @CORREOSS = @CORREOSS + @EMAILR + ','
FETCH PRUEBA INTO @IDGRUPOEMAIL,@EMAIL,@EMAILR
END
SET @CORREOSP = SUBSTRING(@CORREOSP,1,LEN(@CORREOSP)-1)
SET @CORREOSS = SUBSTRING(@CORREOSS,1,LEN(@CORREOSS)-1)
INSERT INTO TABLA_TEMPORAL VALUES(@IDGRUPO,@CORREOSP,@CORREOSS)
END
SELECT * FROM TABLA_TEMPORAL
CLOSE PRUEBA
DEALLOCATE PRUEBA
******************************************************************************
Quiero pasarlo a ORACLE pero ahi esta el problema, creo que me estoy
equivocando en la sintaxis
******************************************************************************
En Oracle trate de hacerlo asi.........
****************************************************************************
CREATE OR REPLACE PROCEDURE SP_CONCATENAREMAILPORGRUPO
(IDGRUPO IN NUMBER)
IS
IDGRUPOEMAIL NUMBER;
EMAIL VARCHAR2(256);
EMAILR VARCHAR2(256);
CORREOSP VARCHAR2(1024);
CORREOSS VARCHAR2(1024);
NAME VARCHAR(50);
SELECT TABLE_NAME INTO NAME FROM DBA_TABLES WHERE
TABLE_NAME='TABLA_TEMPORAL';
IF NAME = '' THEN
DROP TABLE TABLA_TEMPORAL;
END IF;
CREATE TABLE TABLA_TEMPORAL
( IDGRUPOEMAIL NUMBER ,EMAIL VARCHAR2(1024), EMAILR VARCHAR2(1024));
CURSOR PRUEBA IS
SELECT DET.IDGRUPOEMAIL,CLI.EMAIL,CLI.EMAILR
FROM DETALLEGRUPOEMAIL DET, CLIENTES CLI
WHERE DET.IDGRUPOEMAIL = IDGRUPO
AND DET.IDCLIENTE = CLI.IDCLIENTE;
BEGIN
OPEN PRUEBA;
CORREOSP := '';
CORREOSS := '';
NAME :='';
LOOP
FETCH PRUEBA INTO IDGRUPOEMAIL,EMAIL,EMAILR;
EXIT WHEN PRUEBA%NOTFOUND;
BEGIN
CORREOSP := CORREOSP + EMAIL + ',' ;
CORREOSS := CORREOSS + EMAILR + ',' ;
END;
END LOOP;
CORREOSP := SUBSTR(CORREOSP,1,LENGTH(CORREOSP)-1);
CORREOSS := SUBSTR(CORREOSS,1,LENGTH(CORREOSS)-1);
INSERT INTO #TABLA_TEMPORAL VALUES(IDGRUPO,CORREOSP,CORREOSS);
CLOSE PRUEBA;
SELECT * FROM #TABLA_TEMPORAL;
END;
*****************************************************************************
el problema es el sgte en las lineas CREATE TABLE,DROP TABLE
CREATE OR REPLACE PROCEDURE XXXX
IS
BEGIN
CREATE TABLE PRUEBA(COD NUMBER,NOMBRE VARCHAR2(50));
END;
*************************************************************************
me sale error.....
Por favor espero una sugerencia
Valora esta pregunta
0