THEBRANCO 0 Denunciar post Postado Maio 20, 2010 Ola pessoal eu sou meio leigo em oracle.. e gostaria de uma ajudinha d vcs. Criei um tablespace no meu bando de dados e gostaria de mover as tabelas do tablespace antigo para este novo.. estou tentando criar uma procedure que faz isso pra mim, mas ela não esta compilando.. o erro é o seguinte: Compilation errors for PROCEDURE BRANCO.MUDA_TABLESPACE Error: PLS-00103: Encontrado o símbolo "ALTER" quando um dos seguintes símbolos era esperado: begin case declare end exit for goto if loop mod null pragma raise return select update while with <um identificador> <um identificador delimitado por aspas duplas> <uma variável de ligação> << close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe Line: 10 Text: ALTER TABLE V_TABLE MOVE TABLESPACE TBS_BRANCO; CREATE OR REPLACE PROCEDURE MUDA_TABLESPACE IS V_TABELA VARCHAR2(30); CURSOR CUR_TAB IS SELECT TABLE_NAME FROM USER_TABLES; begin OPEN CUR_TAB; LOOP FETCH CUR_TAB INTO V_TABELA; DBMS_OUTPUT.put_line(V_TABELA); ALTER TABLE V_TABLE MOVE TABLESPACE TBS_BRANCO; EXIT WHEN CUR_TAB%NOTFOUND; END LOOP; CLOSE CUR_TAB; end MUDA_TABLESPACE; Grato Branco Compartilhar este post Link para o post Compartilhar em outros sites
caduribeiro13 0 Denunciar post Postado Maio 20, 2010 Cara, Utilize o execute immediate no comando alter. Aqui compilou desta maneira, aí precisa testar para ver se o resultado é atingido: CREATE OR REPLACE PROCEDURE MUDA_TABLESPACE IS V_TABELA VARCHAR2(30); CURSOR CUR_TAB IS SELECT TABLE_NAME FROM USER_TABLES; begin OPEN CUR_TAB; LOOP FETCH CUR_TAB INTO V_TABELA; DBMS_OUTPUT.put_line(V_TABELA); execute immediate 'ALTER TABLE :V_TABLE MOVE TABLESPACE TBS_BRANCO' using in v_tabela; EXIT WHEN CUR_TAB%NOTFOUND; END LOOP; CLOSE CUR_TAB; end MUDA_TABLESPACE; Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Maio 20, 2010 Comandos de DDL (Data Definition Language) não são suportados diretamente em PLSQL para isto use, como disse o cadurubeuiro13, o EXECUTE IMMEDIATE. Compartilhar este post Link para o post Compartilhar em outros sites
THEBRANCO 0 Denunciar post Postado Maio 20, 2010 Bom pessoal ao procedure compilou..porem num ta dando certo quando eu executo ela da o seguinte erro: JB/SQL version 1.0.2.8 Connected to: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production SQL> execute muda_tablespace; execute muda_tablespace * ORA-00903: nome de tabela inválido ORA-06512: em "BRANCO.MUDA_TABLESPACE", line 11 ORA-06512: em line 1 OLEO_DIESEL SQL> O QUE PODE SER ? gRATO Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Maio 20, 2010 Não sei a síntaxe exta mas uma SP não é a melhor forma de fazer isto. Use um programa gerenciador do Oracle para fazer isto. Compartilhar este post Link para o post Compartilhar em outros sites
THEBRANCO 0 Denunciar post Postado Maio 20, 2010 Não sei a síntaxe exta mas uma SP não é a melhor forma de fazer isto. Use um programa gerenciador do Oracle para fazer isto. ok Motta vou fazer isso, por enquanto mto obrigado pela ajuda. Compartilhar este post Link para o post Compartilhar em outros sites