ورود

View Full Version : سوال: روش استفاده متغیر به جای اسم جدول در کوئری



mpmsoft
شنبه 23 شهریور 1387, 13:30 عصر
دوستان من چطوری می تونم کدی بنویسم که اسم جدولو تو یک متغیر بدم من که به این شکل نوشتم خطا داد



declare @mah1 varchar(20)
@mah1='TblAg'

select count(RecID) FROM @mah1 WHERE CodeAgence=1213

Rambod
یک شنبه 24 شهریور 1387, 12:29 عصر
نميتونيد اين كار رو بكنيد. همچين چيزي امكان نداره.

NewFoxStudent
یک شنبه 24 شهریور 1387, 16:43 عصر
declare @mah1 varchar(20)
@mah1='TblAg'
exec('select count(RecID) FROM '+ltrim(rtrim(@mah1))+' WHERE CodeAgence=1213')

Rambod
یک شنبه 24 شهریور 1387, 20:29 عصر
جناب NewFoxStudent عزيز از اينكه باعث شديد بنده به اشتباه خودم پي ببرم خيلي ممنونم. چون عين اين سئوال حدود يك هفته پيش براي خودم پيش اومده بود. پيش يكي از اساتيد SQL Server رفتم ايشون گفتند نميشه همچين كاري رو كرد. براي همين من هم خيلي مطمئن گفتم نميشه...

فقط يه چيزي. امكان اين هست كه يك فانكشن بنويسيم كه مقدار countي كه در Select هست رو به عنوان خروجي برگردونه؟

SYNDROME
دوشنبه 25 شهریور 1387, 06:43 صبح
فقط يه چيزي. امكان اين هست كه يك فانكشن بنويسيم كه مقدار countي كه در Select هست رو به عنوان خروجي برگردونه؟
داخل Function چنین کدی را بنویسید.


Select @CountRec = Count(*)
From Tbl_Test

Return CountRec

فقط به نظر من اول شرطهای خود را داخل یک مغییر بریزید و سپس آن را اجرا کنید تا خوانا تر باشد.


Set @SQL = ' Select * From '+@TableName
Exec @SQL

موفق باشید

Rambod
دوشنبه 25 شهریور 1387, 07:22 صبح
داخل Function چنین کدی را بنویسید.


Select @CountRec = Count(*)
From Tbl_Test

Return CountRec



منظور من استفاده اين تكنيكيه كه NewFoxStudent گفتند. يعني مثلاً يه فانكشن بنويسيم كه اسم Table رو به عنوان پارامتر بگيره و تعداد ركوردهاي اون رو برگردونه...

NewFoxStudent
دوشنبه 25 شهریور 1387, 08:48 صبح
بله چنین تابعی رو میشه نوشت
امروز کدش رو میزارم

Rambod
چهارشنبه 01 آبان 1387, 11:26 صبح
ما همچنان منتظر جناب NewFoxStudent هستيم.