Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

क्या मैं SQL सर्वर में एक वैश्विक फ़ंक्शन बना सकता हूँ?

आप मास्टर (या कुछ अन्य स्थायी डेटाबेस) में फ़ंक्शन बना सकते हैं, और फिर मॉडल डेटाबेस में एक समानार्थी शब्द बना सकते हैं:

USE model;
GO
CREATE SYNONYM dbo.getDays FOR master.dbo.getDays;

यह किसी भी नए . में फ़ंक्शन के लिए एक समानार्थी बना देगा डेटाबेस, लेकिन मौजूदा डेटाबेस (या भविष्य में संलग्न या पुनर्स्थापित किए गए डेटाबेस) के लिए आपको समानार्थी शब्द की प्रतिलिपि बनाने की आवश्यकता होगी। यह आपको किसी भी डेटाबेस में ऑब्जेक्ट को दो-भाग के नाम से संदर्भित करने की अनुमति देगा, जबकि कोड की केवल एक प्रति संग्रहीत करने की आवश्यकता होगी।

एक तरफ, आपका कोड अधिक संक्षिप्त हो सकता है:

  RETURN (SELECT DATEPART(DAY, DATEADD(DAY, -1, 
     DATEADD(MONTH, 1, DATEADD(DAY, 1-DAY(@date), @date)))));

तो ऊपर से:

USE [master];
GO
DROP FUNCTION dbo.getDays;
GO
CREATE FUNCTION dbo.getDays
(
    @date DATE
)
RETURNS INT
AS
BEGIN
    RETURN (SELECT DATEPART(DAY, DATEADD(DAY, -1, 
         DATEADD(MONTH, 1, DATEADD(DAY, 1-DAY(@date), @date)))));
END
GO

अब प्रत्येक डेटाबेस में इसके लिए समानार्थी शब्द बनाने के लिए:

DECLARE @sql NVARCHAR(MAX) = N'';

SELECT @sql += CHAR(13) + CHAR(10) 
+ 'USE ' + QUOTENAME(name) + ';

IF OBJECT_ID(''dbo.getDays'', ''FN'') IS NOT NULL
  DROP FUNCTION dbo.getDays;

IF OBJECT_ID(''dbo.getDays'', ''SN'') IS NOT NULL
  DROP SYNONYM dbo.getDays

CREATE SYNONYM dbo.getDays FOR master.dbo.getDays;'
 FROM sys.databases WHERE name <> 'master';

PRINT @sql;

EXEC sp_executesql @sql;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2008 SQL Server 2005 के साथ संगतता

  2. जांचें कि क्या उपयोगकर्ता पहले से ही asp.net वेबसाइट में लॉग इन है

  3. SQL सर्वर (T-SQL) में प्रत्येक विभाजन में पंक्तियों की संख्या वापस करने के 3 तरीके

  4. SQL सर्वर में क्वेरी परिणाम का चयन करने के लिए अनुक्रम के साथ 'प्रारंभ' कैसे सेट करें?

  5. SQL सर्वर में datetime2 बनाम datetimeoffset:क्या अंतर है?