मैं कुछ विशिष्ट मूल्य के साथ विशिष्ट स्तंभ के साथ सभी तालिकाओं खोजने के लिए इस क्वेरी लिखने के लिए कोशिश कर रहा हूँ से मिलने का चयन करें। यह मैं अब तक क्या किया है है -एसक्यूएल सर्वर sp_msforeachtable उपयोग केवल उन तालिकाओं जो कुछ हालत
EXEC sp_MSforeachtable
@command1='
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=PARSENAME("?",2) AND TABLE_NAME=PARSENAME("?",1) AND COLUMN_NAME="EMP_CODE")
BEGIN
IF (SELECT COUNT(*) FROM ? WHERE EMP_CODE="HO081")>0
BEGIN
SELECT * FROM ? WHERE EMP_CODE="HO081"
END
END
'
मुझे आशा है कि मेरे इरादों स्पष्ट हैं, मैं तो बस केवल उन तालिकाओं का चयन करने के जहां स्तंभ EMP_CODE
वर्तमान और उन तालिकाओं में है चाहता हूँ मैं उन पंक्तियों का चयन करना चाहते हैं जहां EMP_CODE='HO081'
।
संपादित करें -
अब यह इस तरह खड़ा है। लेकिन मैं क्वेरी में @EMPCODE
वैरिएबल को प्रतिस्थापित करने में सक्षम नहीं हूं।
DECLARE @EMPCODE AS VARCHAR(20)
SET @EMPCODE='HO081'
EXEC sp_MSforeachtable
@command1='
DECLARE @COUNT AS INT
SELECT @COUNT=COUNT(*) FROM ? WHERE EMP_CODE='''[email protected]+'''
IF @COUNT>0
BEGIN
PRINT PARSENAME("?",1)+'' => ''+CONVERT(VARCHAR,@COUNT)+'' ROW(S)''
--PRINT ''DELETE FROM ''+PARSENAME("?",1)+'' WHERE EMP_CODE='''''[email protected]+'''''''
END
',@whereand='AND O.ID IN (SELECT OBJECT_ID FROM SYS.COLUMNS C WHERE C.NAME='''[email protected]+''')'
आप दिखा आप क्या कर सकते हैं, लेकिन परोक्ष आपको बता ऐसा नहीं करने के लिए लिए +1;) – cairnz
@Damien_The_Unbeliever मान लीजिए अगर मैं 'IF (COUNT का चयन करें (*) लिखने से कहां EMP_CODE = '' '+ @EMPCODE + '' ')> 0' तो यह मुझे क्यों दे रहा है - '+' के पास गलत वाक्यविन्यास। मैं एक चर के माध्यम से 'EMP_CODE' मान को पारित करने का प्रयास कर रहा हूं। –
@ सोहमदासगुप्त - टिप्पणी अनुभाग में इस तरह के मुद्दे का निदान करना थोड़ा मुश्किल है, क्योंकि मुझे वास्तव में पूरी क्वेरी को देखना होगा क्योंकि यह अब खड़ा है, और यह टिप्पणियों में काम नहीं करेगा। मैं फिर से कोड के उस विशेष टुकड़े से पूछता हूं - क्यों * गिनती * मिलान करने की बजाए मिलान पंक्तियों की संख्या * क्यों? खाली परिणाम सेट आमतौर पर निपटने के लिए काफी आसान हैं। –