Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rômulo Silva

no script

Recommended Posts

Pessoal algué resolver o pq dessa falha

 

DECLARE

		v_Total  int;

BEGIN

SELECT COUNT(OWNER) INTO v_Total FROM ALL_TABLES WHERE TABLE_NAME = 'CAD_EMPRESA'

IF v_Total = 0 THEN
	
	CREATE TABLE "CAD_EMPRESA" ("IDT_EMPRESA" NUMBER(8,0), 
					"NOM_EMPRESA" NVARCHAR2(50) NOT NULL ENABLE, 
					CONSTRAINT "PK_EMPR" PRIMARY KEY ("IDT_EMPRESA") ENABLE,
					CONSTRAINT "UN_EMPR" UNIQUE ("NOM_EMPRESA")ENABLE);
END IF;

COMMIT;

END;

Quando eu executo da o seguinte erro:

 

 

ORA-06550: linha 13, coluna 13:

PLS-00103: Encontrado o símbolo "CREATE" quando um dos seguintes símbolos era esperado:

 

begin case declare exit for goto if loop mod null pragma

raise return select update while with

 

<< close current delete fetch lock

insert open rollback savepoint set sql execute commit forall

merge pipe

 

 

Alguém pode me ajudar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

plsql não executa comandos de ddl , use a função execute immediate para isto

 

DECLARE

		v_Total  int;
		v_sql	 varchar2(4000);

BEGIN

SELECT COUNT(OWNER) INTO v_Total FROM ALL_TABLES WHERE TABLE_NAME = 'CAD_EMPRESA'

IF v_Total = 0 THEN
	
	v_sql := 'CREATE ....';
	EXECUTE IMEDIATE V_SQL;
END IF;

COMMIT;

END;

Compartilhar este post


Link para o post
Compartilhar em outros sites

plsql não executa comandos de ddl , use a função execute immediate para isto

 

DECLARE

		v_Total  int;
		v_sql	 varchar2(4000);

BEGIN

SELECT COUNT(OWNER) INTO v_Total FROM ALL_TABLES WHERE TABLE_NAME = 'CAD_EMPRESA'

IF v_Total = 0 THEN
	
	v_sql := 'CREATE ....';
	EXECUTE IMEDIATE V_SQL;
END IF;

COMMIT;

END;

Valeu Kra... Porém pintou outra dúvida...

 

Valeu kra, funcionou muito bem... Agora outra pergunta isso se não for abusar muito...

Esse função que eu criei com a sua ajuda é para eu colocar em um script SQL, o que ela faz é verificar se uma determinada tabela existe, caso não existe ela irá cria-la...

Teria como eu fazer isso só usando SQL, isso é sem o uso da PL/SQL?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma solução meio suja é apenas rodar o script , pois se objeto existir dará erro e seguirá o script sem maiores problemas.

 

Solução limpa , que eu saiba , testando só via pl/sql mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.