Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как выполнить функцию в функции 
V
    Опции темы
MadCoder
Дата 13.5.2008, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 478
Регистрация: 24.8.2007
Где: Москва

Репутация: нет
Всего: 2



Здравствуйте!

Написал небольшой запрос на авторизацию:
Код

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER  FUNCTION [dbo].[Checkpassword] (@userlogin varchar(32), @userpassword varchar(32))  
RETURNS int AS  
begin
DECLARE @RC int;
    IF @userpassword = (select password from tblEmployee where userlogin=@userlogin)
    select @RC = (select empl_id from dbo.tblEmployee where userlogin=@userlogin)
ELSE
    SELECT @RC= -1; 

IF @RC =-1
EXECUTE [etap].[dbo].[InsLogRec] 
   @RC
  ,''
  ,'Вход'

return @RC
end


Хочу сделать так, чтобы после успешной авторизации этот же запрос добавлял события в таблицу логов (за это отвечает процедура InsLogRec). Никак не получается вставить ее в функции авторизации, пишет следующее при выполнении:
Msg 557, Level 16, State 2, Procedure Checkpassword, Line 16
Only functions and extended stored procedures can be executed from within a function.


Попробовал сделать обычным Insert'ом, пишет, что нельзя выполнять инсерт в функциях :(. 

Что делать?
PM WWW ICQ   Вверх
MadCoder
Дата 13.5.2008, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 478
Регистрация: 24.8.2007
Где: Москва

Репутация: нет
Всего: 2



Вся проблема в том, что MS SQL не может выполнять функции, вложенные в друг друга или операцию Insert. Переписал функция как процедуру - и все заработало. smile 
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0824 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.