2012-07-31 10 views
7

में यहाँ मेरी समारोह घोषणा और शरीर का हिस्सा है। इस समारोह मुझे इस तरह त्रुटियों दे:PL/pgSQL चयन एक सरणी

psql:functions.sql:62: ERROR: syntax error at or near "team_ids" 
LINE 13: AND "team_id" IN team_ids; 
+0

मुझे लगता है कि आपको अपने चयन में ऑर्डर गलत मिला है। ऐसा नहीं होना चाहिए: 'tmp_team_list से टीम_आईड्स में टीम_आईडी चुनें;' –

उत्तर

11

तेज़ और सरल एक FROM clause in your UPDATE statement साथ:

UPDATE team_prsnl p 
SET updt_dt_tm = now() 
     ,last_access_dt_tm = now() 
FROM tmp_team_list t 
WHERE p.team_id = t.team_id; 

जबकि एक सरणी के साथ काम कर, WHERE खंड होता तरफ यही कारण है,

WHERE team_id = ANY (team_ids) 

IN निर्माण सेट के साथ काम करता है होना करने के लिए , सरणी के साथ नहीं।

3

एक SELECT से एक सरणी बनाने के लिए:

# select array( select id from tmp_team_list) ; 
?column? 
---------- 
{1,2} 
(1 row) 

IN ऑपरेटर documented दायां संकार्य के लिए एक सबक्वेरी लेने के रूप में है। उदाहरण के लिए:

UPDATE team_prsnl SET updt_dt_tm = NOW() 
WHERE team_id IN (SELECT id FROM tmp_team_list); 

शायद आप पूरी तरह सरणी से बचने के लिए, या सरणी या select from team_ids की आपूर्ति कर सकते हैं।

संबंधित मुद्दे