با سلام دوستان....
من کد زیر رو نوشتم در واقع من قصد دارم با این کد اطلاعاتی رو از جدولی بگیرم و یک جدول دیگه درست کنم که نام اون جدول به صورت پارامتری گرفته میشود.
که با دستور EXEC اون جدول ساخته میشود.
و بعد یک ستون به اون جدول اضافه میشه که در آخر بر اساس اون ستون قراره که من دستور SELECT قرار است اجرا شود.
اما عجیب اینجاست که وقتی در دستور SELECT از * استفاده میشود ستون اضافه شده نمایش داده میشود اما اگر از نام اون ستون در دستور WHERE استفاده شود آن ستون را نمیشناسد.
من کد رو در زیر میارم دقت کنید اگر مشکل من رو حل کنید و راهنمائیم کنید ممنون میشم.
CREATE PROCEDURE Custom_Paging
(
@CurrentPage int,
@PageSize int,
@Table_Name nvarchar(50),
@TotalRecords int OUTPUT
)
AS
-- Turn off count return.
Set NoCount On
-- Declare variables.
Declare @FirstRec int
Declare @LastRec int
-- Initialize variables.
Set @FirstRec = (@CurrentPage - 1) * @PageSize
Set @LastRec = (@CurrentPage * @PageSize + 1)
-- Create a temp table to hold the current page of data
-- Add an ID column to count the records
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TempCustom]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[TempCustom]
EXEC('SELECT * INTO TempCustom FROM ' + @Table_Name)
if @@ERROR = 0
BEGIN
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TempCustom]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
ALTER TABLE TempCustom ADD TTID Bigint IDENTITY (1, 1) PRIMARY KEY
--Complete Proc Return Tables and TotalRow Count
SELECT @TotalRecords = COUNT(*) FROM TempCustom
SELECT * FROM TempCustom WHERE TTID > @FirstRec AND TTID < @LastRec
END
یک نکته دیگر اینکه وقتی با دستور EXEC طبق کد بالا اگر بخواهم جدول را از نوع موقتی بسازم به محض ساخته شدن جدول از بین میرود و گد دیگر جدول موقتی را اصلا تشخیص نمیدهد.
اشکال از کجاست؟
با تشکر از راهنمایی شما.