मैं पीएल एसक्यूएल में नया हूं, और मुझे जांचना होगा कि सर्वर पर टेबल मौजूद है या नहीं।जांचें कि डेटाबेस में तालिका मौजूद है या नहीं - पीएल एसक्यूएल
अग्रिम धन्यवाद, गोरान
मैं पीएल एसक्यूएल में नया हूं, और मुझे जांचना होगा कि सर्वर पर टेबल मौजूद है या नहीं।जांचें कि डेटाबेस में तालिका मौजूद है या नहीं - पीएल एसक्यूएल
अग्रिम धन्यवाद, गोरान
आप tablenames
select tname from tab where tname = 'TABLE_NAME_TO_SEARCH_FOR';
select tname from tab where tname = 'TABLE_NAME';
यह जहां जानकारी स्कीमा की असली शक्ति में आता है। एक साधारण क्वेरी में बताएगा क्वेरी कर सकता है सही दिशा
SELECT
*
FROM
information_schema.tables
WHERE
table_name='salesorders';
यह फिर बी ई plpg समारोह
CREATE OR REPLACE FUNCTION table_exists(v_table text)
RETURNS boolean AS
$BODY$
DECLARE
v_count int;
v_sql text;
BEGIN
v_sql =
'SELECT ' ||
' count(1) ' ||
'FROM ' ||
' information_schema.tables ' ||
'WHERE ' ||
E' table_name=\'' || v_table || E'\'';
EXECUTE v_sql INTO v_count;
RETURN v_count>0;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
में इस्तेमाल किया समारोह
select * from table_exists('salesordesrs');
तुम जा पाने के लिए पर्याप्त होना चाहिए कि का उपयोग करें।
ओओपीएस लगता है कि मैं मूल पोस्टर प्रश्न को गलत तरीके से पढ़ता हूं। मैंने PostgreSQL के लिए उत्तर दिया है।
पीटर।
सबसे कुशल तरीका है, नहीं। बस टेबल छोड़ दो। यदि तालिका पहले से मौजूद नहीं है, तो यह एक अपवाद उठाएगा।
तालिका छोड़ने से ठीक पहले एक प्रश्न चलाना सिर्फ ओरेकल आपके लिए स्वचालित रूप से करने वाले समय को बर्बाद कर रहा है।
आप के रूप में मेरे डीबी एक अजीब वृक्ष संरचना है, अपवाद को मनचाहे, उदा .:
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE "MYTABLE"';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE = -942 THEN
DBMS_OUTPUT.put_line('the table did not exist!');
ELSE
RAISE;
END IF;
END;
@ user428955: नहीं, यह काम नहीं करेगा - एक बाइंड वैरिएबल का उपयोग टेबल नाम के लिए नहीं किया जा सकता है। –
क्या आप निश्चित हैं? http://docs.oracle.com/cd/B14117_01/appdev.101/b10807/13_elems017.htm आपके साथ असहमत प्रतीत होता है। – KJP
हाँ, मुझे यकीन है। उस लिंक में कुछ भी नहीं है जो बताता है कि एक * टेबल नाम * को बाध्य चर में आपूर्ति की जा सकती है। –
मैं ऊपर समाधान के साथ कुछ मुसीबतों था संभाल कर सकते हैं। यह आपकी स्कीमा में प्रत्येक तालिका देना चाहिए:
SELECT
table_name
FROM
all_tables
WHERE
table_name = '<your table here>'
ध्यान दें कि तालिका नाम ऊपरी मामला होना चाहिए, भले ही आपने बनाया हो अपरकेस के बिना टेबल। – Elmue
ध्यान दें कि टेबल नाम ऊपरी केस होना चाहिए भले ही आपने अपरकेस के बिना तालिका बनाई हो। – Elmue