Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > SELECT из неизвестной таблицы


Автор: PaZ1T1V 14.2.2010, 17:38
Пытаюсь создать функцию в MS SQL server 
Код

ALTER FUNCTION dbo.GetID
(
    @myTableVar Varchar(10),
        @myFieldVar Varchar(10)
)
    
RETURNS int
AS BEGIN
    DECLARE @tmp int
    SET @tmp = (SELECT MAX(@myFieldVar) from @myTableVar)
    RETURN @tmp
END


Что сие значит? - достать максимальное значение из какого то столбца, входящего как параметр, какой то таблицы, тоже, ВХОДЯЩЕЙ КАК ПАРАМЕТР... но что то оно так не хочет работать, пишет ошибку "Must declare the table variable @myTableVar " 
подскажите пожалуйста, как с этими бороться ???


Нашел решение своей проблемы - ругался он на то, что входные параметры не инициализированы, ну, или как это....
Покопавшись  в просторах рунета нашел я что это просто решается, переписал свою функцию таким образом
Код

ALTER FUNCTION dbo.GetID
(
    @myTableVar Varchar(10),
    @myFieldVar Varchar(10)
)
    
RETURNS int
AS BEGIN
    DECLARE @maxID int
    DECLARE @query varchar(200)
    SET @query = 'select ' + @myFieldVar + ' from ' + @myTableVar
    SET @maxID = NULL
    exec @maxID = @query
    RETURN @maxID
END




ЗЫ просьба не пинать за нарушение правила "один топик - один вопрос"
ЗЗЫ за любую помощь буду благодарен!


мдааа, вот такая конструкция exec @maxID = @query не прокатит, то есть, мне надо запихнуть результат выполнения запроса в переменную типа int, как это сделать? кто нибудь знает ??? Заранее спасибо 

Автор: PaZ1T1V 16.2.2010, 06:10
ни у кого нет желания помочь ??? 

Автор: kobra 16.2.2010, 15:29
причем тут Базы данных под .NET? и почему думаеш что здес на этот вопрос будут отвечать?
тема для раздела  Базы данных -> MS SQL Server
Код

CREATE FUNCTION dbo.GetMaxID
(
    @myTableVar Varchar(10),
    @myFieldVar Varchar(10)
)
RETURNS TABLE
AS
BEGIN
    DECLARE @query nvarchar(max)
    SET @query = 'select max(' + @myFieldVar + ') from ' + @myTableVar
    exec (@query)
END


Автор: PaZ1T1V 16.2.2010, 18:06
Спасибо большое, учту на будущее что все вопросы по SQL надо задавать не здесь, спасибо еще и за помощь smile) Работает!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)