Обновите пакет из SQLPLUS - PullRequest
3 голосов
/ 13 декабря 2010

Я пытаюсь обновить пакет в Oracle, исходя из SQL Server, это сбивает с толку.

Я написал командный файл, который сначала запускает файл .spec , а затем файл .body , но даже запуск его вручную не работает.

Я использую этот синтаксис:

sqlplus username/password@databasename @c:\temp\myfile.spec
sqlplus username/password@databasename @c:\temp\myfile.body

Когда я возвращаюсь в Sql Developer, я могу просмотреть хранимые процедуры в пакете и убедиться, что они не были обновлены.

Почему мои пакеты не обновляются?

Ответы [ 2 ]

4 голосов
/ 13 декабря 2010

Для файлов спецификации и тела необходимо, чтобы / заставлял SQL * Plus создавать / заменять объект.

Без /:

CREATE OR REPLACE PACKAGE TEST12_13 AS

PROCEDURE TEST12_13;

END;

STAGE@DB>@C:\TEST.PKS
  6  

С /:

CREATE OR REPLACE PACKAGE TEST12_13 AS

PROCEDURE TEST12_13;

END;

/

STAGE@DB>@C:\TEST.PKS

Package created.

В ответ на ваш комментарий о передаче имени файла в качестве параметра вместо передачи имени файла в качестве параметра, используйте SQL *Плюс спросить у вас имя файла

    wrapper.sql

ACCEPT filename_var Prompt 'Enter filename'

@c:\temp\&filename_var
/
@c:\temp\&filename_var
/
3 голосов
/ 13 декабря 2010

Подключитесь к SQL * Plus с помощью

sqlplus username/password@databasename

Затем запустите сценарий из командной строки SQL * Plus:

set echo on
@c:\temp\myfile.spec

Вы сможете увидеть, как это происходит,включая любые сообщения об ошибках.

...