Firebird 1.5.3, FibPlus 5.2
Привет всем!!!
Вопрос такой:
есть хранимая процедура:
Код: Выделить всё
CREATE PROCEDURE GRANT_ROLE (
CMD VARCHAR(6),
ROLENAME VARCHAR(31),
USR VARCHAR(31))
AS
DECLARE VARIABLE EXESTUB VARCHAR(1024) = '';
begin
if (rolename = '') then rolename = null;
if (usr = '') then usr = null;
if ((rolename is null) or (usr is null)) then exit;
else
begin
if (cmd starting with 'g') then
exestub = 'grant ';
else
exestub = 'revoke ';
if (exestub = 'grant ') then
exestub = exestub || rolename || ' to ' || usr;
else
exestub = exestub || rolename || ' from ' || usr;
execute statement exestub;
end
end
Сама она работает (в том же IBExpert-е проверял), но проблема в другом:
- на форме есть 2 ДБГрида, связанные с датасетами (DataSetRole - мастер и DataSetUser - деталь) - так вот, при добавлении
пользователя, он у меня должен записаться в БД безопасности и в таблицу моей БД и здесь же должно выполниться назначение
роли (мастера) данному юзеру (детали). вызываю процедуру так (с помощью компонента pFIBStoredProc):
Код: Выделить всё
DM.StoredProc.SQL.Clear;
//1-ый способ:
//DM.StoredProc.SQL.Add('EXECUTE PROCEDURE GRANT_ROLE(''grant'',''' + DM.DSRoleNAME.AsString + ''', ''' + Edit.Text) + ''')');
//DM.StoredProc.ExecProc;
//или так:
// 2-ой способ:
DM.StoredProc.ExecProcedure('SPRole',['grant', DM.DSRoleNAME.AsString, Edit.Text)]);
Заранее благодарен!