PDA

View Full Version : ارسال Table به Stored Procedure



Davood_amega
پنج شنبه 14 مرداد 1389, 10:48 صبح
سلام
می خواستم Stored Procedure با پارامتری درست کنم که نام Table را بگیرد و فیلدهای آن Table را برگرداند در اینجا (http://barnamenevis.org/forum/showthread.php?t=237732) از همچنین کدی استفاده کرده بود که من با کمی تغییر کد زیر را نوشتم .

Alter procedure ProductName1(@f nvarchar(20))
as
begin
SELECT
*
FROM
sys.objects o WHERE o.name=@f
اما مشخصه که اشتباهه و با این کد نام Table ارسالی به همراه اطلاعاتی درباره آن Table را بر می گرداند .
هر کسی اطلاعاتی داره دریغ نکنه !
به این منابع هم مراجعه کردم اما نتونستم کاری انجام بدم .

http://www.barnamenevis.org/forum/showthread.php?t=233360
http://www.sqlservercentral.com/articles/Stored+Procedures/2977 (http://www.sqlservercentral.com/articles/Stored+Procedures/2977/)

mostafa_zainy
پنج شنبه 14 مرداد 1389, 12:31 عصر
سلام

دوست عزیز کد زیر رو امتحان کن :



SELECT * FROM sys.all_columns

where(object_id = (select object_id from sys.tables where(name='Table Name')))

order by column_id




بجای Table Name نام جدولت رو قرار بده

Davood_amega
پنج شنبه 14 مرداد 1389, 12:47 عصر
بازم نشد این دفعه فقط نام فیلدها را آورد !

mostafa_zainy
پنج شنبه 14 مرداد 1389, 13:57 عصر
اینو امتحان کن



SELECT name AS [Field Name],
(SELECT TOP (1) name
FROM sys.systypes
WHERE (xtype = sys.all_columns.system_type_id)) AS [Data Type], max_length, is_nullable, is_identity
FROM sys.all_columns
WHERE (object_id = (SELECT object_id FROM sys.tables WHERE (name = 'Table Name')))


امیدوارم اونی که میخواستی باشه

Davood_amega
پنج شنبه 14 مرداد 1389, 15:34 عصر
ممنون اما اینم فقط نام فیلدها به همراه یه سری خصوصیاتش را آورد .

Davood_amega
جمعه 15 مرداد 1389, 00:23 صبح
این کد پیدا کردم !! اما به نظر می رسد اصولی نیست !


ALTER PROCEDURE dbo.mySP
@country nvarchar(20)
AS
declare @query varchar(120)
set @query = 'SELECT * FROM '+@country

exec(@query)

RETURN

محمد سلیم آبادی
جمعه 15 مرداد 1389, 11:40 صبح
از ویو های سیستمی استفاده کنین:

SELECT column_name
FROM information_schema.columns
WHERE table_name = @table_name;