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

Sql सर्वर नियतात्मक उपयोगकर्ता-परिभाषित फ़ंक्शन

आपको बस इसे बनाने की जरूरत है with schemabinding .

SQL सर्वर तब यह सत्यापित करेगा कि यह नियतात्मक के रूप में माने जाने वाले मानदंडों को पूरा करता है या नहीं (जो यह करता है क्योंकि यह किसी बाहरी टेबल तक नहीं पहुंचता है या गैर नियतात्मक कार्यों जैसे getdate() का उपयोग नहीं करता है। )।

आप सत्यापित कर सकते हैं कि इसने

. के साथ काम किया है
SELECT OBJECTPROPERTY(OBJECT_ID('[dbo].[FullNameLastFirst]'), 'IsDeterministic')

अपने मूल कोड में स्कीमाबाइंडिंग विकल्प जोड़ना ठीक काम करता है लेकिन थोड़ा सरल संस्करण होगा।

CREATE FUNCTION [dbo].[FullNameLastFirst] (@IsPerson  BIT,
                                           @LastName  NVARCHAR(100),
                                           @FirstName NVARCHAR(100))
RETURNS NVARCHAR(201)
WITH SCHEMABINDING
AS
  BEGIN
      RETURN CASE
               WHEN @IsPerson = 0
                     OR @FirstName = '' THEN @LastName
               ELSE @LastName + ' ' + @FirstName
             END
  END


  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 सर्वर 2014 में मानक संस्करण ग्राहकों के लिए कुछ अच्छी खबरें

  2. JDBC ड्राइवर का उपयोग करके SQL सर्वर में डिफ़ॉल्ट पंक्ति प्रीफ़ेच सेट करें

  3. SQL सर्वर इस कोड को अनियमित क्यों नहीं मानता?

  4. SQL सर्वर में डायनामिक पिवट टेबल

  5. टी-एसक्यूएल के साथ एक पंक्ति अपडेट करें