Oracle - URGENTE

 
Vista:

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
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