Я хочу выполнить ниже хранимую процедуру для нескольких таблиц, передав имя таблицы в качестве параметра.Выполнение хранимой процедуры для нескольких таблиц
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
CREATE PROCEDURE GETARTICLESPAGEWISE
@PageIndex INT = 1
,@PageSize INT = 10
,@ArticleCategory varchar(100) = 'null'
,@RecordCount INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SELECT ROW_NUMBER() OVER
(
ORDER BY [ArticleID] ASC
)AS RowNumber
,[ArticleID]
,[ArticleName]
,[ArticleCategory]
INTO #ResultSet
FROM [ASPDOTNETARTICLES]
WHERE ArticleCategory = @ArticleCategory
SELECT @RecordCount = COUNT(*)
FROM #ResultSet
SELECT * FROM #ResultSet
WHERE RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1
DROP TABLE #ResultSet
END
GO
--EXEC dbo.GETARTICLESPAGEWISE @PageIndex =1, @PageSize = 2, @ArticleCategory='Gridview',@RecordCount=0
Я пытался, но произошел ошибка, попробовал хранимую процедуру
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
ALTER PROCEDURE GETARTICLESPAGEWISEGENERIC
@PageIndex INT = 1
,@PageSize INT = 10
,@ArticleCategory varchar(100) = 'null'
,@RecordCount INT OUTPUT
,@TableName varchar(100) = 'NULL'
AS
BEGIN
DECLARE @columnList varchar(200)
SET @columnList=' SELECT ROW_NUMBER() OVER
(
ORDER BY [ArticleID] ASC
)AS RowNumber
,[ArticleID]
,[ArticleName]
,[ArticleCategory]'
SET NOCOUNT ON;
DECLARE @sqlCommand varchar(300)
set @sqlCommand ='
SELECT '+ @columnList +'
INTO #ResultSet
FROM '+ @TableName +'
WHERE ArticleCategory ='+ @ArticleCategory+'
//i got the error in this statement
SELECT @RecordCount = COUNT(*)
FROM #ResultSet
SELECT * FROM #ResultSet
// i got the error in this statement
WHERE RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1
DROP TABLE #ResultSet'
END
GO
Может у решения этой проблемы?
Это, как правило, признак того, что ваш дизайн стола сломан - если несколько таблиц содержат один и тот же «вид» данных, таким образом, что это имеет смысл запросить их взаимозаменяемыми, это, как правило, потому что они должны были быть единой таблицей с дополнительными столбцами, хранящими данные, которые в настоящее время встроены в имена таблиц. Например. Классический пример - вы, вероятно, не должны иметь таблицы «MaleEmployees» и «FemaleEmployees». –