مشکل استفاده از متغیر در نام create table
با سلام و خسته نباشید خدمت شما
من می خواهم که از متغیر در نام create table استفاده بکنم اما به من ارور می دهد به کوئری زیر توجه کنید :
declare @a varchar(50) = 'orders' CREATE TABLE @a ( OrderID INT IDENTITY(1,1) NOT NULL, OrderDate DATETIME NOT NULL, OrderFreight MONEY NULL, ProductID INT NULL, aa char(2000) null )
و ارور در زیر هست :
Msg 102, Level 15, State 1, Line 5 Incorrect syntax near '@a'.
ممنون می شوم راهنمایی کنید
با تشکر از شما
5 پاسخ
کد رو از جایی کپی کردین که به همراه خودش کدهای غیرمجاز همراه داره در این مواقع قبل از استفاده از کد اول کد رو یک بار در نت پد پیست کنید بعد کپی کنید و ببرید تو پروژه تا کدهای غیرمجازش حدف بشه
پایگاه داده Tempdb
پایگاه داده Tempdb یکی از بانک های اطلاعاتی سیستمی است و SQL Server بعنوان چرکنویس از آن استفاده می کند.
محل ذخیره سازی Temp Table و Table Variable در پایگاه داده Tempdb می باشد.
عملیات های مرتب سازی سنگین که در ساخت ایندکس اتفاق می افتد در پایگاه داده Tempdb انجام می شود.
در حین اجرای یک script میشه یکسری اطلاعات رو داخل یک جدول موقت ریخت و تو هم تایمی که داره script اجرا میشه از دیتای اون جدول استفاده کرد این جدول موقت در واقع در دیتابیس tempdb ساخته میشود . نحوه ساخت آن بصورت مثال زیر زیر است .
create table #Temp
(
EventID int,
EventTitle Varchar(50),
EventStartDate DateTime,
EventEndDate DatetIme,
EventEnumDays int,
EventStartTime Datetime,
EventEndTime DateTime,
EventRecurring Bit,
EventType int
)
Insert Into #Temp
Select EventID, EventStartDate, EventEndDate, PlannedDate as [EventDates], Cast(PlannedDate As datetime) AS DT, Cast(EventStartTime As time) AS ST,Cast(EventEndTime As time) AS ET, EventTitle
,EventType from Calendar
از کد زیر استفاده کنید
declare @a varchar(50) = 'orders' SELECT @CreateTable = N' CREATE TABLE ' + @a+ ' ( OrderID INT IDENTITY(1,1) NOT NULL, OrderDate DATETIME NOT NULL, OrderFreight MONEY NULL, ProductID INT NULL, aa char(2000) null ) ' Exec sp_executesql @CreateTable
با سلام و خسته نباشید خدمت شما دوست عزیز و گرامی
جناب مهندس عزیز از توضیحات شما بسیار ممنونم لطف کردید خیلی عالی بود فقط منظور من این هست که در temporary table به چه صورت می توان از متغیر در نام create table استفاده کرد منظور من این هست مهندس جان ممنون می شوم پاسخ دهید.
با تشکر از شما
با سلام و خسته نباشید خدمت شما
جناب آقای مهندس moin65 عزیز ممنونم لطف کردید من کوئری بالا را یکمی تغییر دادم درست شد اصل کوئری درست بود دست شما درد نکنه فقط یک متغیر کم داشت به کوئری زیر توجه کنید :
declare @CreateTable nvarchar(500) declare @a varchar(50) = 'orders' SELECT @CreateTable = N' CREATE TABLE ' + @a+ ' ( OrderID INT IDENTITY(1,1) NOT NULL, OrderDate DATETIME NOT NULL, OrderFreight MONEY NULL, ProductID INT NULL, aa char(2000) null ) ' Exec sp_executesql @CreateTable
این کوئری خیلی به درد من خورد ممنونم
اما من یک سئوال دیگر هم از شما داشتم به چه صورت در tempdb و در temporary table می شود یک جدول موقتی با این روش ایجاد کرد ممنونم که پاسخ می دهید
با تشکر از شما