Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Прочие БД - Проблемы с созданием и вызовом PL/SQL процедур в oracle XE

Ответить
Настройки темы
Прочие БД - Проблемы с созданием и вызовом PL/SQL процедур в oracle XE

Аватара для ElVоvan

Новый участник


Сообщения: 30
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: ElVоvan
Дата: 11-05-2008
Описание: опечатка
Для обучения PL/SQL использую Oracle XE, пользуюсь им через веб-интерфейс, я разблокировал демо-пользователя HR, который был в базе данных по-умолчанию, дал ему все полномочия, и использую заранее заготовленые демо-таблицы, но возникают некоторые проблемы. Например, мне нужно создать некоторую процедуру, я ввожу в поле для запросов следующий код
Код: Выделить весь код
create or replace procedure
ADD_JOB(id JOBS.JOB_ID%type,title JOBS.JOB_TITLE%type) as
begin
	insert into JOBS (JOB_ID, JOB_TITLE)
	values (id,title);
end ADD_JOB;
мне в ответ выдаётся
Код: Выделить весь код
Statement processed.
0,02 seconds
То есть, вроде бы всё нормально, процедура появляется в object browser'e. Теперь я пытаюсь вызвать процедуру из анонимного блока и добавить в таблицу пару строк:
Код: Выделить весь код
declare
begin
	ADD_JOB('IT_DBA','Database Administrator');
	ADD_JOB('ST_MAN','Stock Manager');
end;
Вот тут мне выдаётся:
Код: Выделить весь код
ORA-06550: line 3, column 2:
PLS-00905: object HR.ADD_JOB is invalid
ORA-06550: line 3, column 2:
PL/SQL: Statement ignored
ORA-06550: line 4, column 2:
PLS-00905: object HR.ADD_JOB is invalid
ORA-06550: line 4, column 2:
PL/SQL: Statement ignored
1. declare
2. begin
3. 	ADD_JOB('IT_DBA','Database Administrator');
4. 	ADD_JOB('ST_MAN','Stock Manager');
5. end;
У пользователя есть права на использование процедур, модификацю своих же таблиц, у него вообще все права есть, процедура и её вызов просто взяты из книжки и адаптированы под существующие таблицы.
Кто-нибудь может помочь всё же заставить процедуру запускаться?

Отправлено: 21:14, 11-05-2008

 

Новый участник


Сообщения: 27
Благодарности: 2

Профиль | Отправить PM | Цитировать


http://download.oracle.com/docs/cd/B...b14261/toc.htm
Очень рекомендую читать официальную документацию.

Отправлено: 23:07, 17-05-2008 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для ElVоvan

Новый участник


Сообщения: 30
Благодарности: 0

Профиль | Отправить PM | Цитировать


Что-то не сильно помагает, у меня и так книга от авторов, работающих в оракл.

Взял один из примеров, приведённых по ссылке:
Код: Выделить весь код
CREATE OR REPLACE PROCEDURE award_bonus (emp_id NUMBER, bonus NUMBER) AS
   commission        REAL;
   comm_missing EXCEPTION;
BEGIN  -- executable part starts here
   SELECT commission_pct / 100 INTO commission FROM employees
    WHERE employee_id = emp_id;
   IF commission IS NULL THEN
      RAISE comm_missing;
   ELSE
      UPDATE employees SET salary = salary + bonus*commission 
      WHERE employee_id = emp_id;
   END IF;
EXCEPTION  -- exception-handling part starts here
   WHEN comm_missing THEN
      DBMS_OUTPUT.PUT_LINE('This employee does not receive a commission.');
      commission := 0;
   WHEN OTHERS THEN
      NULL; -- for other exceptions do nothing
END award_bonus;
Запускаю, в ответ пишет:
Код: Выделить весь код
Procedure created
Потом запускаю свой пример, приведённый выше (я там переименовал только параметр id, тк id является ключевым словом, а в веб-интерфейсе подсветки нет), он выдаёт Statement proceeded, то есть выражение выполнено... Запускаю процедуру из примера - работает, запускаю свою - результат, что и в первом сообщении. Вроде прочёл про создание процедур и в книге и в документации по ссылке, делаю как и описано - CREATE OR REPLACE PROCEDURE <...> AS <...> BEGIN <...> END; но что-то толку от этого никакого, не могу сам разобраться, поэтому и прошу помощи....

Отправлено: 14:23, 18-05-2008 | #3


Аватара для ElVоvan

Новый участник


Сообщения: 30
Благодарности: 0

Профиль | Отправить PM | Цитировать


Странные какие-то глюки были, всё заработало, проблема была в неправильном символе перехода на новую строку (я текст в gedit'е набирал), если набирать непосредственно в окошке веб-интерфейса или в каком-нибудь другом редакторе, то всё работает нормально...

Отправлено: 20:50, 20-05-2008 | #4


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Цитата ElVоvan:
ADD_JOB(id JOBS.JOB_ID%type,title JOBS.JOB_TITLE%type) as »
укажи типы явно.

Цитата ElVоvan:
declare begin ADD_JOB('IT_DBA','Database Administrator'); ADD_JOB('ST_MAN','Stock Manager'); end; »

execute ADD_JOB('IT_DBA','Database Administrator');
execute ADD_JOB('ST_MAN','Stock Manager');

а вот так не пробЫвал?

PS: не называй идентификаторы типа job или jobs!
потомучто в оракле job - это специальный объект. т.е. блок pl/sql выполняющейся по расписанию

Отправлено: 14:44, 13-06-2008 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Прочие БД - Проблемы с созданием и вызовом PL/SQL процедур в oracle XE

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
MSFT SQL Server - [решено] Преобразование скрипта для Oracle в скрипт для SQL EvgeniyQQQ Программирование и базы данных 3 25-03-2009 01:26
Прочие БД - Oracle SQL Developer: отображение значений полей. BacuJIuu KypraHoB Программирование и базы данных 0 28-11-2008 16:10
ответы на задания по курсу ORACLE PL/SQL Vlad Drakula Программирование и базы данных 2 25-05-2006 09:16
Проблемы с созданием Makefile... Zippy Программирование и базы данных 5 18-08-2004 19:38
Проблемы с созданием FTP Shima Сетевые технологии 3 15-06-2004 14:56




 
Переход