|
|
|
Select @IDN=ID FROM @TABLENAME - КАК???
|
|||
|---|---|---|---|
|
#18+
Select @IDN=ID FROM @TABLENAME Не работает. Ругается на недекларированную @TABLENAME. Есс-но всё задекларировано и присвоено правильное значение. EXEC ('SELECT @IDN=ID FROM '+ @TABLE) ессно ругается на несуществующий @IDN Как не заморачиваясь с временными таблицами сделать такое - либо вернуть значаение из EXEC либо найти решение в лоб с FROM @TABLENAME PS в моём реальном SELECT есть конечно WHERE - так, что возвращается 1 строка. Но этот раздел я не привожу чтоб не загромождать условие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2002, 11:11 |
|
||
|
Select @IDN=ID FROM @TABLENAME - КАК???
|
|||
|---|---|---|---|
|
#18+
Пишу: 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 без всяких паков ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2002, 11:48 |
|
||
|
Select @IDN=ID FROM @TABLENAME - КАК???
|
|||
|---|---|---|---|
|
#18+
Так работает, но мен нужно передавать название существующей таблицы в процедуру как параметр и там обрабатывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2002, 12:12 |
|
||
|
Select @IDN=ID FROM @TABLENAME - КАК???
|
|||
|---|---|---|---|
|
#18+
Надо так: declare @Comand varchar(200) set @comand = 'declare @IDN int SELECT @IDN=ID FROM '+ @TABLE + ' Select @IDN as NewID' EXEC (@comand) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2002, 12:38 |
|
||
|
Select @IDN=ID FROM @TABLENAME - КАК???
|
|||
|---|---|---|---|
|
#18+
А как теперь вернуть NewID в переменную сохранённой процедуры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2002, 12:57 |
|
||
|
Select @IDN=ID FROM @TABLENAME - КАК???
|
|||
|---|---|---|---|
|
#18+
>А как теперь вернуть NewID в переменную сохранённой процедуры? А зачем его в переменную процедуры впихивать? Вы выполните процедуру, а она вам вернет рекордсет состоящий из одного поля и одной записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2002, 13:00 |
|
||
|
Select @IDN=ID FROM @TABLENAME - КАК???
|
|||
|---|---|---|---|
|
#18+
Хотя конечно если сильно хочется, то см. в BOL процедуру sp_executesql ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2002, 13:02 |
|
||
|
Select @IDN=ID FROM @TABLENAME - КАК???
|
|||
|---|---|---|---|
|
#18+
Я прошу прощения за тупость (совсем недавно перешёл на сервер), но покажи - что делать с этим рекордсетом после вызова процедуры. Например при вызове EXEC INS_ONE 'Towns' в Query Analyser я вижу этот recordset, но как дальше использовать полученное значение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2002, 13:23 |
|
||
|
Select @IDN=ID FROM @TABLENAME - КАК???
|
|||
|---|---|---|---|
|
#18+
Рекордсет можно втянуть через ADO. Если же тебе зачем то нужна переменная в процедуре, то см. вышеуказанную процедуру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2002, 13:40 |
|
||
|
Select @IDN=ID FROM @TABLENAME - КАК???
|
|||
|---|---|---|---|
|
#18+
Через ADO конечно втяну, но это малая часть большой сохранённой процедуры. Поэтому надо как раз вернуть в процедуру (в текущую или вызывающую неважно). Насчёт sp_executesql - может приведёшь пример, чтот я никак не въеду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2002, 14:07 |
|
||
|
Select @IDN=ID FROM @TABLENAME - КАК???
|
|||
|---|---|---|---|
|
#18+
Всё разобрался!!! Gennady спасибо огромное, я просто не знал, что sp_executesql поддлерживает out параметры, а в справке это не описано! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2002, 15:10 |
|
||
|
Select @IDN=ID FROM @TABLENAME - КАК???
|
|||
|---|---|---|---|
|
#18+
2 OCLiker Молодец что разобрался, потому что когда ты попросил пример я сам в тупик зашел. Сам я этой процедурой не пользовался, а то что она может возвращать параметры узнал на этом форуме, но как не знал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2002, 06:12 |
|
||
|
Select @IDN=ID FROM @TABLENAME - КАК???
|
|||
|---|---|---|---|
|
#18+
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 ... Можно использовать несколько выходных параметров. Ещё раз спасибо!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2002, 09:29 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32030991&tid=1822626]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
202ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 524ms |

| 0 / 0 |
