PDA

View Full Version : سوال: يک سئوال ساده TSQL



nazanintaraneh
سه شنبه 13 مرداد 1388, 12:56 عصر
سلام
يک Store _procedure مي خواهم بنويسم که نام Tableرا بگيرد و به من آخرين ID را بدهد .(ID يکي از فيلدهاي جدول است )
با راهنمايي يکي از دوستان اين را نوشتم :
create Procedure dbo.GetLastID2(@Table_Name varchar
as
Begin
DECLARE @sqlString varchar(100)
SET @sqlString='select top 1 id from '+@Table_Name+' order by id desc'
EXECUTE sp_executesql @sqlString
END
GO

اما سئوالات من :
1- چرا در اينجاEXECUTE sp_executesql @sqlString به جاي نوشتن نام Sp
که GetLastID2 است ، sp_executesql رانوشته ؟
2- در هنگام اجرا نام Table را کجا بايد بدهم؟

بهنام بهمنی
سه شنبه 13 مرداد 1388, 13:24 عصر
1- sp_executesql نام یک sp است که برای رشته sql را برای اجرا به آن پاس داده ای می شد این نام را هم نگذاشت و به صورت


Exec('')

بنویسی اما شکل فعلی بهتر است

2- برای پارامتر پاس دادن هم بستگی به محیط فراخوانی دارد - در sql وقتی روی نام sp راست کلیک کرده و درخواست اجرا بدهی پنجره ای برای گرفتن پارامترها باز می شود.

Kamyar.Kimiyabeigi
سه شنبه 13 مرداد 1388, 14:59 عصر
sp_executesql زماني استفاده ميشود كه شما بخواين از داخل يك execute مقداري را بگيرين بشرطي كه داخل يك statements باشين