powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Select @IDN=ID FROM @TABLENAME - КАК???
13 сообщений из 13, страница 1 из 1
Select @IDN=ID FROM @TABLENAME - КАК???
    #32030947
OCLiker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Select @IDN=ID FROM @TABLENAME Не работает. Ругается на недекларированную @TABLENAME. Есс-но всё задекларировано и присвоено правильное значение.

EXEC ('SELECT @IDN=ID FROM '+ @TABLE) ессно ругается на несуществующий @IDN

Как не заморачиваясь с временными таблицами сделать такое - либо вернуть значаение из EXEC либо найти решение в лоб с FROM @TABLENAME

PS в моём реальном SELECT есть конечно WHERE - так, что возвращается 1 строка. Но этот раздел я не привожу чтоб не загромождать условие.
...
Рейтинг: 0 / 0
Select @IDN=ID FROM @TABLENAME - КАК???
    #32030955
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишу:

declare @Table table (Id int not null primary key, Name varchar(10) not null)

insert into @Table (id, Name) Values (1, 'a')
insert into @Table (id, Name) Values (2, 'b')
insert into @Table (id, Name) Values (3, 'c')

declare @Id int

select @Id = Id
from @Table
where Name = 'b'

select @Id

Увсе работает. MSSQL 2000 без всяких паков
...
Рейтинг: 0 / 0
Select @IDN=ID FROM @TABLENAME - КАК???
    #32030960
OCLiker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так работает, но мен нужно передавать название существующей таблицы в процедуру как параметр и там обрабатывать.
...
Рейтинг: 0 / 0
Select @IDN=ID FROM @TABLENAME - КАК???
    #32030970
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо так:
declare @Comand varchar(200)
set @comand = 'declare @IDN int SELECT @IDN=ID FROM '+ @TABLE + ' Select @IDN as NewID'
EXEC (@comand)
...
Рейтинг: 0 / 0
Select @IDN=ID FROM @TABLENAME - КАК???
    #32030976
OCLiker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как теперь вернуть NewID в переменную сохранённой процедуры?
...
Рейтинг: 0 / 0
Select @IDN=ID FROM @TABLENAME - КАК???
    #32030978
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>А как теперь вернуть NewID в переменную сохранённой процедуры?
А зачем его в переменную процедуры впихивать?
Вы выполните процедуру, а она вам вернет рекордсет состоящий из одного поля и одной записи.
...
Рейтинг: 0 / 0
Select @IDN=ID FROM @TABLENAME - КАК???
    #32030979
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя конечно если сильно хочется, то см. в BOL процедуру sp_executesql
...
Рейтинг: 0 / 0
Select @IDN=ID FROM @TABLENAME - КАК???
    #32030988
OCLiker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я прошу прощения за тупость (совсем недавно перешёл на сервер), но покажи - что делать с этим рекордсетом после вызова процедуры.
Например при вызове EXEC INS_ONE 'Towns' в Query Analyser я вижу этот recordset, но как дальше использовать полученное значение?
...
Рейтинг: 0 / 0
Select @IDN=ID FROM @TABLENAME - КАК???
    #32030991
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рекордсет можно втянуть через ADO.
Если же тебе зачем то нужна переменная в процедуре, то см. вышеуказанную процедуру.
...
Рейтинг: 0 / 0
Select @IDN=ID FROM @TABLENAME - КАК???
    #32030993
OCLiker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Через ADO конечно втяну, но это малая часть большой сохранённой процедуры. Поэтому надо как раз вернуть в процедуру (в текущую или вызывающую неважно). Насчёт sp_executesql - может приведёшь пример, чтот я никак не въеду.
...
Рейтинг: 0 / 0
Select @IDN=ID FROM @TABLENAME - КАК???
    #32030999
OCLiker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё разобрался!!!
Gennady спасибо огромное, я просто не знал, что sp_executesql поддлерживает out параметры, а в справке это не описано!
...
Рейтинг: 0 / 0
Select @IDN=ID FROM @TABLENAME - КАК???
    #32031047
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 OCLiker
Молодец что разобрался, потому что когда ты попросил пример я сам в тупик зашел. Сам я этой процедурой не пользовался, а то что она может возвращать параметры узнал на этом форуме, но как не знал.
...
Рейтинг: 0 / 0
Select @IDN=ID FROM @TABLENAME - КАК???
    #32031075
OCLiker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SET @IDN = 0
set @comand = 'SELECT @IDN=ISNULL(' + @IDNAME + ',0) FROM '+ @TNAME + ' WHERE ' + @FNAME + '='''+@DATAS+''''
exec sp_executesql @Comand, N'@IDN int out',@IDN=@IDN out
IF @IDN=0
...
ELSE
...
Можно использовать несколько выходных параметров.

Ещё раз спасибо!!!
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Select @IDN=ID FROM @TABLENAME - КАК???
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]