PDA

View Full Version : تعریف تابع



reddevilutd
جمعه 16 مهر 1395, 12:23 عصر
من یک تابع نیاز دارم که خروجی دستور زیر :
SELECT DISTINCT FieldName

را که نام تعدادی فیلد هست ، دریافت نماید و آن را به صورت یک رشته :

' [FieldName1] , [FieldName2] , [FieldName3] '

نمایش دهد.
با تشکر

khorsandreza
جمعه 16 مهر 1395, 20:12 عصر
این فانکشن را در دیتابس مدل و یا دیتابیس خودت در اسکیوال سرور ایجاد کنید

USE [YourDataBaseName]
GO
/****** Object: UserDefinedFunction [dbo].[GetFieldList] Script Date: 16/07/1395 08:39:42 ب.ظ ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create FUNCTION [dbo].[GetFieldList]
(@tbname as nvarchar(50))
RETURNS nvarchar(max)
AS
BEGIN
DECLARE @fieldlist nvarchar(max)='';
DECLARE @ProductID nvarchar(10);
DECLARE @getcodm CURSOR
SET @getcodm = CURSOR FOR
SELECT c.name FROM sys.columns c
left join sys.extended_properties cd
on(c.column_id =cd.minor_id)
and(c.object_id=cd.major_id)
WHERE object_id = OBJECT_ID(@tbname) OPEN @getcodm
FETCH NEXT
FROM @getcodm INTO @ProductID
WHILE @@FETCH_STATUS = 0
BEGIN
set @fieldlist = @fieldlist+ @ProductID+','




FETCH NEXT
FROM @getcodm INTO @ProductID
END
CLOSE @getcodm
DEALLOCATE @getcodm
--PRINT @fieldlist
return @fieldlist
END





سپس با دستور زیر میتوانید نام فیلدهای جدول را بدست بیاوری

exec GetFieldList 'YourTBName'