Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.10.17;
Скачать: CL | DM;

Вниз

процедура в 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.008 c
3-1246438693
nachi
2009-07-01 12:58
2010.10.17
посчитать сумму параметров дочерних эл-тов_continue


2-1279523013
Meroveus
2010-07-19 11:03
2010.10.17
парсинг HTML?


15-1279120336
xayam
2010-07-14 19:12
2010.10.17
Изучаем Java


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


15-1279315123
Кто б сомневался
2010-07-17 01:18
2010.10.17
PHP - тип поля