Форум: "Прочее";
Текущий архив: 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 Developerselect 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