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

एडीओ और वीबी के साथ संग्रहीत प्रक्रिया इनपुट पैरामीटर में न्यूल या खाली स्ट्रिंग कैसे पास करें?

यहां एक त्वरित परीक्षण से पता चलता है कि NULL को काम करना चाहिए। नमूना कोड जिसका मैं परीक्षण करता था (एक बटन और एक टेक्स्टबॉक्स के साथ एक साधारण रूप में):

Private Sub Command1_Click()
    Dim dbConn As ADODB.Connection
    Dim dbComm As ADODB.Command
    Dim dbRS As ADODB.Recordset

    Set dbConn = New ADODB.Connection
    With dbConn
        .ConnectionString = "...REPLACE THIS ACCORDINGLY..."
        .ConnectionTimeout = 10
        .Open
    End With
    Set dbComm = New ADODB.Command
    With dbComm
        .ActiveConnection = dbConn
        .CommandType = adCmdStoredProc
        .CommandText = "usp_Bob"
        .Parameters.Append .CreateParameter("b", adVarChar, adParamInput, 10, Null)
        Set dbRS = .Execute
    End With
    Text1.Text = dbRS.Fields.Item(0).Value

    dbRS.Close
    dbConn.Close
End Sub

और इसे इस संग्रहित खरीद का नाम दिया गया:

ALTER PROCEDURE usp_Bob
 @b VARCHAR(10)
AS
 IF @b IS NULL
  SELECT 'NULL' AS '1'
 ELSE
  IF @b = ''
   SELECT 'EMPTY' AS '1'
  ELSE
   SELECT 'NOT NULL AND NOT EMPTY' AS '1'

usp_Bob ने VB मान का उपयोग करने के लिए 'NULL' लौटाया Null (उपरोक्त नमूने के अनुसार), और vbNull . के लिए 'NOT NULL' . अगर Null आपके लिए काम नहीं करता है, तो मैं इस पर टिप्पणी नहीं कर सकता कि क्या गलत हो सकता है...!

इसी तरह, खाली स्ट्रिंग्स को उसी तरह से पास किया जाना चाहिए - एक खाली स्ट्रिंग, यानी str = "" -- जो usp_Bob को 'खाली' लौटाता है। किसी और चीज में यह 'नॉट न्यूल और नॉट एम्प्टी' (उम्मीद के मुताबिक) लौटाता है।

यदि आप NULL को पास नहीं करवा सकते हैं, तो दूसरा विकल्प यह है कि स्पोक में एक खाली स्ट्रिंग को NULL में डाला जाए - यानी,

IF @param = ''
    SET @param = NULL

ध्यान दें कि आप जिस लंबाई से गुजरते हैं वह बहुत अधिक मायने नहीं रखती है। यह उस डेटा की लंबाई के बजाय 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

  2. मैं एसक्यूएल सर्वर में शीर्ष 100 रिकॉर्ड कैसे अपडेट कर सकता हूं?

  3. SQL सर्वर अपडेट ट्रिगर, केवल संशोधित फ़ील्ड प्राप्त करें

  4. टी-एसक्यूएल - क्या दो तालिकाओं में डेटा की तुलना करने का कोई (मुक्त) तरीका है?

  5. ईएफ 6 - समानांतर प्रश्नों को सही ढंग से कैसे करें