Код ниже T-SQL предназначен для чтения идентификатора и проверки наличия идентификатора в таблице_1 или нет. если он существует, UDF Getname3 возвращает таблицу, состоящую из всех столбцов этого идентификатора, если она не существует, я хочу вызвать функцию m, предназначенную для печати ошибки. Но проблема возникает, когда я хочу вызвать m UDF в Getname3. Как я могу правильно вызвать m в Getname3.Вызов функции внутри функции В SQL Server
Спасибо
Create function m()
returns nvarchar(max)
as
begin
return cast('Error happened here.' as int);
end
go
Create Function Getname3(@ID nchar(10))
returns @t Table (Melicode nchar(10), Name nvarchar(50), Id nchar(10), Tel nvarchar(max))
AS
Begin
if (exists (select * from Table_1 where Melicode = @ID))
begin
insert @t
select *
from Table_1
where Melicode = @ID
end
else
begin
dbo.m() // PROBLEM Here
end
return
end
go
select *
from dbo.Getname3('0410339127')
У вас проблема с производительностью здесь. Вы создали функцию, зависящую от таблицы, но она является функцией многозначной таблицы. Это чаще, чем нет, еще медленнее скалярной функции, но у вас даже есть один из них внутри. –
У вас не должно быть разных наборов результатов от одного выбора. Я бы справился с существованием или отсутствием данных на вашем прикладном уровне. – ewahner