Войти

Показать полную графическую версию : pl/sql


modem
19-01-2004, 00:37
начал я изучать язык pl/sql (самостоятельно) , вот у меня такой вопрос....вот допустим есть у меня код написанный на этом языке, и как мне его исполнять? нужно в sql+ ввести : @(путь к файлу-коду) ?, тогда получиться просто исполняемый файл, или существуют какието компиляторы для этого языка????

mar
19-01-2004, 19:29
существует возможность выполнить команды(процедуры) в среде СУБД (как расширение имеющихся возможностей) - например, в postgres-е

modem
20-01-2004, 23:53
написал я вот такой код для заполнения моей пробной таблицы в которой 5 столбцов(имя, ник, дом_тел, сот_тел, мыло)
ACCEPT имя char prompt 'введите имя:'
ACCEPT ник char prompt 'введите ник:'
ACCEPT дом_тел  char prompt 'введите номер дом_тел:'
ACCEPT сот_тел char prompt 'введите номер сот_тел:'
ACCEPT мыло char prompt 'введите email:'
insert into peoples (имя, ник, дом_тел,
сот_тел, мыло)
values ('имя', 'ник', 'дом_тел',
'сот_тел','мыло')
запускается и выполняется всё без ошибок но в результате вместо введённых значений вводяться значения указанные в ключе Values

SQL> @c:\insert.txt
введите имя:Модулятор-демодулятор
введите ник:модем
введите номер дом_тел:911
введите номер сот_тел:03
введите email:lamer@lamer.ru

SQL> select * from peoples
 2  /

ИМЯ   НИК   ДОМ_ТЕЛ   СОТ_ТЕЛ   МЫЛО                      
----- ----- --------- --------- ------      
имя   ник   дом_тел   сот_тел   мыло                      

SQL> exit

Megabyte
21-01-2004, 10:16
вместо введённых значений вводяться значения указанные в ключе Values
А без кавычек пробовал?

insert into peoples (имя, ник, дом_тел, сот_тел, мыло)
values (имя, ник, дом_тел, сот_тел, мыло)

modem
21-01-2004, 17:32
всё, дошло до меня......... :) я просто забыл поставить литерал & , а если без кавычек писать, то ошибку выдаст: недопустимо имя столбца или что то вроде того, я вчера до 2.00 из-за этого сидел :)

предлагаю создать на форуме  раздел по БД :)
:oszone:

Prisoner
22-01-2004, 04:21
C предложениями вам сюда (http://forum.oszone.net/forums.cgi?forum=14).

modem
22-01-2004, 18:24
а если мне нужно ввести в таблицу кучу данных, тогда бы мне пришлось этот скрипт запускать много раз, а если после последнего приглашения для ввода данных , будет ещё одно приглашение : хотите ли вы продолжить ввод и создать ещё одну строку, я вот попробывал написать вот такой код, только вот ерунда получилась, точнее ничего не получилось:

Begin
<<MID>>
ACCEPT имя_z char prompt 'введите имя:'
ACCEPT ник_z char prompt 'введите ник:'
ACCEPT дом_тел_z  char prompt 'введите номер дом_тел:'
ACCEPT сот_тел_z char prompt 'введите номер сот_тел:'
ACCEPT мыло_z char prompt 'введите email:'
ACCEPT конец char prompt 'продолжите ввод?(Y/N):'
insert into peoples (имя, ник, дом_тел,
сот_тел, мыло);
values('&имя_z', '&ник_z', '&дом_тел_z', '&сот_тел_z', '&мыло_z' );
if (&конец = 'Y') THEN goto MID ;
elsif (&конец = 'N') THEN
end if;
end ;
/

если я на вопрос продолжения ввода отвечаю Y, то и иду не к началу а просто присваивается значение : конец = 'Y' , такая же беда с вводом 'N' , вообщем ХЕЛП начинающему советом :)

modem
23-01-2004, 00:34
теперь вроде исправил , но когда доходит до goto зависает sql+

declare
q varchar2(5) :='$YorN';
begin

<<MID>>
loop
insert into peoples (имя, ник, дом_тел,
сот_тел, мыло)
values('&имя_z', '&ник_z', '&дом_тел_z', '&сот_тел_z', '&мыло_z' );
if (q = 'Y') THEN goto MID;
end if;
exit when (q = 'N');
end loop;
end;
/

какова моя ошибка, помогите плиззз , бессоница млин, пока не исправлю спать нормально не буду :(

Bugs
24-01-2004, 05:58
modem
К сожелению под рукой нет книжки, если доживёшь с бессоницей до понедельника тогда гляну :-)

modem
24-01-2004, 22:23
вчарась тоже книжецу заказал , тока она зараза идти будет до меня аж три недели :-(

Bugs
25-01-2004, 05:27
modem
вчарась тоже книжецу заказал , тока она зараза идти будет до меня аж три недели :-(
У меня этих книжец была целая коробка, щас они занимают целую полку в шкафу, в два ряда :)
Но книжицы вообще классные, правда половина на аглицком :gigi:

modem
25-01-2004, 21:07
помоему вот эти две строки:
.....
......
<<MID>>
......
......
if (q = 'Y') THEN goto MID;

создают бесконечный цикл, а их pl/sql не распознаёт, и поэтому виснет у меня сиквел+ , но вопрос мой в силе:

а если мне нужно ввести в таблицу кучу данных, тогда бы мне пришлось этот скрипт запускать много раз, а если после последнего приглашения для ввода данных , будет ещё одно приглашение : хотите ли вы продолжить ввод и создать ещё одну строку




© OSzone.net 2001-2012