Mr_cool Ответов: 1

Как использовать табличную переменную внутри динамического запроса select?


Я создал хранимую процедуру

Я объявил стол

Create PROCEDURE [dbo].[sp_search_report]
	(
	@start_index int ,
	@pagesize int ,
	@sort_by varchar(50),
	@out_status int out,
	@totalcount	int out,
	@query varchar(2000)
	)
AS

SET NOCOUNT ON
declare @query1 varchar(2000);
declare @finalquery nvarchar(2000);
--declare @lastquery nvarchar(2000);
declare @q1 int;
declare @q2 int;
SET @q1 = ((@start_index -1) * @PageSize + 1)
SET @q2 = ((((@start_index -1) * @PageSize + 1) + @PageSize) - 1)


declare @records table
(
    rowNumber int not null identity(1,1) primary key,
        empid varchar(100),
         balance int
)


/* Сделал некоторую вставку здесь в таблицу @records и выберите * from @records также извлекает результаты. Проблема заключается в следующем запросе: */

SET @query1='select ROW_NUMBER() OVER (ORDER BY a.empname desc) AS rowNumber,
a.empid , a.empname, t.balance

 from @records t left outer join tbl_emp a on a.empid =t.empid 
where '





SET @finalquery = 'SELECT * FROM ( '+ @query1 + @query + ' ) as t1 WHERE RowNumber BETWEEN ' + cast(@q1 as char)+' AND '+ cast (@q2 as CHAR)
exec (@finalquery)


Что я уже пробовал:

Ошибка заключается в следующем

Must declare the table variable "@records".


Как я могу это исправить? Помогать мне

John C Rayan

Вы должны использовать временную таблицу, а не табличную переменную в динамическом SQL.

1 Ответов

Рейтинг:
6

John C Rayan

На этот вопрос уже был дан ответ.
Взгляните на

Использование временных таблиц внутри заявление динамического SQL в [^]


Mr_cool

Сработало отлично, спасибо...