И снова о передаче в SP имени колонки (таблицы)

AlexanderVS
Дата: 06.02.2001 05:41:44
Эта тема уже обсуждалась, тогда предложили следующее:
----------------------------------
Create Procedure myProc
@colname nvarchar(20),
@val nvarchar(10)
AS
Declare @qry nvarchar(256)
Set @qry = 'Select * From myTable Where ' + @colname + ' = ' + @val
Exec(@qry)
-------------------------------------
Все конечно работает, но мне понадобилось что бы селект возвращал значение, что то типа:
Set @qry = 'Select * From myTable Where ' + @colname + ' = ' + @val
select @Q=Exec(@qry)
Но к сожалению это не проходит (
Всех благ, Александр.
SergSuper
Дата: 06.02.2001 11:16:47
по моему это можно только через временную таблицу:

Create Procedure myProc
@colname nvarchar(20),
@val nvarchar(10),
@Q varchar(200) out
AS
create table #t(q varchar(200))
insert #t select ''
Declare @qry nvarchar(256), @qry2 nvarchar(256)

Set @qry = 'Select fld From myTable Where ' + @colname + ' = ' + @val
set @qry2='update #t set q=('+ @qry+')'
Exec(@qry2)
select @Q=q from #t
Dmitry
Дата: 06.02.2001 11:37:46
Можно так:
...
create #temp (a int)
declare @Q int
declare @qry varchar(255)
set @qry='insert into #temp Select top 1 fieldname From myTable Where ' + @colname + ' = ' + @val
exec(@qry)
Select @q=a from #temp
Dmitry
Дата: 06.02.2001 11:44:40
Упс... Сорри... Похоже плагиат получился, хотя и невольный - когда загрузил страничку ответов еще не было, начал писать ответ, но не успел - пришлось отойти. Потом пришел, закончил ответ, а оказалось, что это повтор.