Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2010.10.17;
Скачать: [xml.tar.bz2];

Вниз

процедура в oracle. Подскажите   Найти похожие ветки 

 
12 ©   (2010-07-16 13:05) [0]

Как создать и использовать? быстро не удалось найти, может подскажете?
Пишу
CREATE OR REPLACE PROCEDURE GetUser
begin
 select 1 from dual
end;

пишу
begin
-- execute GOODS.(жду, появляется подсказка "GETUSER procedure",
-- соглашаюсь), итого
execute GOODS.GETUSER;
end;


выделяю, как выше, F8 - Ошибка ORA-06550
нагуглил, что что-то с правами
не понимаю, что - я владелец схемы GOODS, я создал и таблицу, и процедуру..


 
Petr V. Abramov ©   (2010-07-16 13:14) [1]

execute лишнее


 
12 ©   (2010-07-16 13:25) [2]

методом тыка и хелпа пришел к

CREATE OR REPLACE Function GetUser  
RETURN NUMBER
IS
cnt number;
BEGIN
SELECT count(*) into cnt FROM filial;
RETURN(cnt);
EXCEPTION WHEN others then return(-1);
END;

begin
select GetUser from dual;
end;

а процедуры так и не понял, особенно с таблицами.
плохо, совсем не как MSSQL, придется книжку читать :)


 
12 ©   (2010-07-16 17:14) [3]

написал в PL/SQL Developer так:

CREATE OR REPLACE Function GetUser
(LGN in varchar2, PWD in varchar2)
RETURN NUMBER
IS
cnt number;
BEGIN
SELECT
      R.ID_ROLE into cnt
FROM
     T_USERS U
     JOIN T_ROLE R on R.ID_ROLE = U.ROLE_ID
WHERE
     U.LOGIN_USER = LGN
     and  U.PWD_USER = PWD;

RETURN(cnt);
EXCEPTION WHEN others then return(-999);
END;


спрашиваю из PL/SQL Developer
select GetUser("A12","A12") RSLT from dual;
выдается ответ, правильный, 3.

Пишу в Delphi

procedure TfrmLogin.btnOKClick(Sender: TObject);
begin
 try
   osLogin.Open;
   oqLogin.SQL.Text := "select GetUser(:User, :Password) RSLT from dual";
   oqLogin.ParamByName("User").AsString := edtLogin.Text;
   oqLogin.ParamByName("Password").AsString := edtPWD.Text;
   oqLogin.Open;
   MyRole := oqLogin.FieldByName("RSLT").AsInteger;
   if MyRole <> nEmpty then
    CreateMainForm(osLogin);
 except
   on E:Exception do
   begin
     ToLog("TfrmLogin.btnOKClick", E);
     frmLog.ShowModal;
   end;
 end;
end;


получаю ошибку
      TfrmLogin.btnOKClick
      EOraError
      ORA-01745: invalid host/bind variable name

Что не так написал?


 
Ламо777   (2010-07-16 17:28) [4]


> oqLogin.ParamByName

это как я понял - означает биндинг переменных по именам? Тогда в биндинге надо указать имя параметра LGN вместо User. В дельфи не силен, но должно быть так.


 
Двенадцать ©   (2010-07-16 17:36) [5]

да, с именами, но что-то не так именно с выбранным именем
просто добавил 1, все заработало
   
   oqLogin.SQL.Text := "select GetUser(:User1, :Password1) RSLT from dual";
   oqLogin.ParamByName("User1").AsString := edtLogin.Text;
   oqLogin.ParamByName("Password1").AsString := edtPWD.Text;


 
Игорь Шевченко ©   (2010-07-16 17:48) [6]


> EXCEPTION WHEN others then return(-1);


> EXCEPTION WHEN others then return(-999);


убьют ведь. и будут абсолютно правы. любой суд оправдает.


 
Двенадцать ©   (2010-07-19 08:30) [7]

> убьют ведь. и будут абсолютно правы. любой суд оправдает.

:)
ок, больше не буду неизвестные ошибки кушать



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2010.10.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.003 c
15-1278713312
limpopo
2010-07-10 02:08
2010.10.17
Оцените реализацию привязки к железу (генерации серийного номера)


15-1279030179
Я
2010-07-13 18:09
2010.10.17
asm to pascal


2-1279888458
oleg_teacher
2010-07-23 16:34
2010.10.17
Сохранить в csv


15-1279204090
Ихтиандр
2010-07-15 18:28
2010.10.17
indy и сокеты


8-1207211017
Monyakman
2008-04-03 12:23
2010.10.17
Приветствую! Мне нужен код чтоб растягивать выделенную область...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский