Oracle - ERROR EXECUTE IMMEDIATE

 
Vista:

ERROR EXECUTE IMMEDIATE

Publicado por Alfredo (17 intervenciones) el 10/12/2008 20:23:49
Hola , tengo un problema al Utilizar el EXECUTE IMMEDIATE me podrian ayudar
DECLARE
sql_stmt VARCHAR2(200);
plsql_block VARCHAR2(500);
v_tabla VARCHAR2(50);
BEGIN
v_tabla := 'Doc' || '134';
BEGIN
EXECUTE IMMEDIATE 'CREATE TABLE BNXAFILIACION.'||v_tabla||'(DocId NUMBER CONSTRAINT PK_'||v_tabla||
' PRIMARY KEY USING INDEX TABLESPACE BNX_AFILIACION_IDX CONSTRAINT FK_'||v_tabla||
'_DIGITALIZAMAIN REFERENCES BNXAFILIACION.DIGITALIZAMAIN(DocID) NOT NULL,fecha_ingreso DATE NOT NULL )
TABLESPACE BNXAFILIACION STORAGE (INITIAL 6144 NEXT 6144 MINEXTENTS 1 MAXEXTENTS 5 );';

EXCEPTION
WHEN OTHERS THEN
IF TO_CHAR(SQLCODE) = '-2260'
THEN
NULL; -- ignore this error.
END IF;
END;
me manda este error
ORA-06550: línea 56, columna 5:
PLS-00103: Se ha encontrado el símbolo "end-of-file" cuando se esperaba uno de los siguientes:

( begin case declare end exception exit for goto if loop mod
null pragma raise return select update while with
<an identifier> <a double-quoted delimited-identifier>
<a bind variable> << continue close current delete fetch lock
insert open rollback savepoint set sql execute commit forall
merge pipe purge
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:ERROR EXECUTE IMMEDIATE

Publicado por Chumi (1 intervención) el 11/12/2008 09:19:23
De entrada te falta un END. Tienes dos BEGIN y solo un END y de salida, en la cadena a la que le haces el EXECUTE INMEDIATE, le sobra el punto y coma del final.
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:ERROR EXECUTE IMMEDIATE

Publicado por Alfredo (17 intervenciones) el 17/12/2008 01:11:45
Gracias Chumi , tienes razon , lo resolvi con el create , pero ahora tengo el mismo problema para ejecutar una cadena por medio de EXECUTE IMMEDIATE , asi como el drop , alter y delete.

declare
v_sDoctype VARCHAR2(10);
v_existe NUMBER := 0;
cnumber NUMBER;

begin
v_sDoctype := '134';
SELECT 1
INTO v_existe
FROM DUAL
WHERE EXISTS (SELECT OBJECT_NAME FROM
USER_OBJECTS WHERE OBJECT_NAME ='WEB_AGREGADOC134');
IF
v_existe = 1 THEN
cnumber := F_DROP_OBJECT(v_sDoctype);
END IF;
end;
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