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

SQL सर्वर संग्रहीत कार्यविधि निष्पादित नहीं कर सकता

आपको डायनेमिक T-SQL का उपयोग करने की आवश्यकता नहीं है इस मामले में बयान। कुछ इस तरह का उपयोग करने का एक तरीका है:

DECLARE @TempXML XML = CONVERT(XML, '<t>' + REPLACE(@CategoriesIdString, ',', '</t><t>') + '</t>')

;WITH DataSource ([CategoryId]) AS
(
    SELECT T.c.value('.', 'VARCHAR(100)')
    FROM @TempXML.nodes('/t') AS T(c)
    WHERE LEN(T.c.value('.', 'VARCHAR(100)')) > 0
)
SELECT Item.Id
      ,Item.ModelId
      ,Item.ItemCode
      ,Item.CategoryId
      ,(SELECT TOP (1) Category.CategoryName FROM Category WHERE Category.Id = Item.CategoryId) AS CategoryName
FROM Item 
LEFT OUTER JOIN Category 
    ON Item.CategoryId = Category.Id
LEFT JOIN DataSource
    ON Item.CategoryId = DataSource.CategoryId
WHERE DataSource.CategoryId IS NOT NULL 
    OR @CategoriesIdString IS NULL

विचार @CategoriesIdString . द्वारा फ़िल्टर करना है पैरामीटर अगर यह NOT NULL है LEFT JOIN का उपयोग कर रहे हैं ।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कसकर युग्मित डेटा वाली तालिका को सामान्य करें

  2. क्या समानांतर कर्सर जैसा कुछ है?

  3. डेटटाइम।अब स्मालडेटटाइम में?

  4. MultiActiveResultSets=सही या एकाधिक कनेक्शन?

  5. लेन-देनस्कोप अपवाद फेंक रहा है, यह प्लेटफॉर्म कनेक्शन ऑब्जेक्ट खोलते समय वितरित लेनदेन का समर्थन नहीं करता है