PDA

View Full Version : جدول موقت



sasan123
چهارشنبه 08 آبان 1387, 07:59 صبح
دوستان من می خواهم جدول موقت را ایجاد کنم و با این کار این را انجام می دهم #tttt
ولی موقعی که ذخیره می کنم ناپدید می شود و دیگه هیچ دسترسی به ان ندارم و زمانی که در sp می نویسم select * from #tttt
میگه invalid #tttt
میشه کسی بگه جداول موقت کجا ذخیره میشن و چه جوری دستیابی میشوند

کم حوصله
چهارشنبه 08 آبان 1387, 11:58 صبح
سلام
دوست عزیز همان گونه که از اسم آن مب آید موقت است و در دیتابیس Tempdb ذخیره می شود ولی قابل دستیابی در جایی دیگر نمی باشد مگر آنکه از ## (2 تا #) استفاده کنید

کم حوصله
چهارشنبه 08 آبان 1387, 11:59 صبح
البته یادتون نره که اگر از 2# استفاده کردید بعد از اتمام کار حتما اونا حذف کنید ;-)

sasan123
چهارشنبه 08 آبان 1387, 12:51 عصر
دوست من یعنی نمی شود میان این #tttt
و جدول دیگر join برقرا کرد و یعنی نمی شود از این استفاده کرد select * from #tttt
یک منبع خوب برام نداری

odiseh
پنج شنبه 09 آبان 1387, 14:28 عصر
لطفا مشکلتون رو دقیقتر مطرح کنید....بگید که چیکار میخواین بکنید تا بهتر بشه راهنماییتون کرد.


دوستان من می خواهم جدول موقت را ایجاد کنم و با این کار این را انجام می دهم #tttt
ولی موقعی که ذخیره می کنم ناپدید می شود و دیگه هیچ دسترسی به ان ندارم و زمانی که در sp می نویسم select * from #tttt
میگه invalid #tttt
میشه کسی بگه جداول موقت کجا ذخیره میشن و چه جوری دستیابی میشوند

sasan123
پنج شنبه 09 آبان 1387, 15:00 عصر
این مسئله ی من من یک function2 دارم که در ان قیمت و تاریخ و نام شرکت و تفاوت با روز قبل محاسبه شده است

RETURN SELECT geymat, tarekh1, nam,isnull(geymat- (SELECT geymat FROM sherkat_m WHERE (DATEDIFF(day, t2.tarekh1, tarekh1) = - 1) AND (nam = t2.nam) AND (DATEDIFF(day, tarekh1, t2.tarekh1) = 1)),0) AS ee1 FROM sherkat_m AS t2
این function2
این را به عنوان جدول اول من فرض کنید حال جدول دوم من را در نظر بگیرید nam شرکت و tarekh ان حال من میخواهم بین این جدول و اخرین قیمت مربوط به هر کالا با هم ارتباط برقرار کنم
یک جدول مجازی در نظر میگیری و در ان جدول مجازی یک متغیر در نظر می گیری
#ii
@متغیر
select @متغیر=count(*) که count تعداد رکورد های قیمت را می شمارد برای هر کالا

و بعد از یک
while از یک تا تعداد رکورد ها
و بر این اساس اخرین قیمت را بدست می اوریم مربوط به هر کالا و بعد این جدول مجازی را با هر جدولی که خواستیم join میکنیم من نه میدانم چه جوری sp بسازم و به عنوان جدول مجازی بگیرم و نه می دانم که از این جدول چه جوری while ان را اجرا کنم و اخرین قیمت را باز گردانم و نه می دانم که چه جوری با یک جدول دگر استفاده کنم
لطفا کمک کنید کمک.......

Microsoft.net
جمعه 10 آبان 1387, 20:56 عصر
مساله اینه هنگامی که شما از # استفاده میکنید جدول ایجاد شده فقط در همان Session معتبر است احتمالا Session شما در هنگام ایجاد جدول و الحاق آنها با هم یکی نیست .
در مورد این فانکشن هم قبلا عرض کرده بودم من اگه بودم بجاش از View استفاده میکردم ؛ در هر حال شما خودتون به صورت مساله بیشتر واقف هستید , موفق باشید .

sasan123
شنبه 11 آبان 1387, 07:15 صبح
فقط در همان Session معتبر است احتمالا Session شما در هنگام ایجاد جدول و الحاق آنها با هم یکی نیست .
دوست من این یعنی من باید چی کار کنم که session ها یکی بشه

Microsoft.net
شنبه 11 آبان 1387, 18:07 عصر
دوست من این یعنی من باید چی کار کنم که session ها یکی بشه

اول اینکه باید مفهوم Session رو بدونید !
اصولا هر زمان که یک Connection رو Open می کنید اصطلاحا یک Session برای شما باز میشه در این حالت یک سری متغیر های سیستمی مقدار دهی اولیه میشن و وضعیت شما با جزییات برای سرویس دهنده شناسایی میشه و احتمالا سرویس دهنده یک سری استراتژی های تخصیص منابع و زمانبندی و ... رو برای اون در نظر خواهد گرفت و کارهایی از این قبیل ...
حالا اگه شما در این Session یک Sharp Table یا همون جدول موقت شخصی درست کنید و به هر دلیل این Connection از بین بره (Dispose) یا بسته بشه (Close) این جدول شما هم از بین خواهد رفت حتی اگر این اتفاق هم نیفته و شما از Session دیگری اقدام به دسترسی به اون رو بکنید به همون خطایی که برخوردید روبرو میشوید
البته اگر از ## استفاده کنید این مشکل حل خواهد شد ولی خوب مسایل دیگری ممکن است بوجود بیاد که ناشی از تعاریف و نحوه کار این دستورات داره و طبیعی هم هست و شما باید به عنوان برنامه نویس بهترین راه حل رو انتخاب کنید .