2010-08-19 14 views

उत्तर

12

आप tablenames

select tname from tab where tname = 'TABLE_NAME_TO_SEARCH_FOR'; 
+0

ध्यान दें कि टेबल नाम ऊपरी केस होना चाहिए भले ही आपने अपरकेस के बिना तालिका बनाई हो। – Elmue

7
select tname from tab where tname = 'TABLE_NAME'; 
4

यह जहां जानकारी स्कीमा की असली शक्ति में आता है। एक साधारण क्वेरी में बताएगा क्वेरी कर सकता है सही दिशा

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 के लिए उत्तर दिया है।

पीटर।

3

सबसे कुशल तरीका है, नहीं। बस टेबल छोड़ दो। यदि तालिका पहले से मौजूद नहीं है, तो यह एक अपवाद उठाएगा।

तालिका छोड़ने से ठीक पहले एक प्रश्न चलाना सिर्फ ओरेकल आपके लिए स्वचालित रूप से करने वाले समय को बर्बाद कर रहा है।

आप के रूप में मेरे डीबी एक अजीब वृक्ष संरचना है, अपवाद को मनचाहे, उदा .:

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; 
+0

@ user428955: नहीं, यह काम नहीं करेगा - एक बाइंड वैरिएबल का उपयोग टेबल नाम के लिए नहीं किया जा सकता है। –

+0

क्या आप निश्चित हैं? http://docs.oracle.com/cd/B14117_01/appdev.101/b10807/13_elems017.htm आपके साथ असहमत प्रतीत होता है। – KJP

+0

हाँ, मुझे यकीन है। उस लिंक में कुछ भी नहीं है जो बताता है कि एक * टेबल नाम * को बाध्य चर में आपूर्ति की जा सकती है। –

1

मैं ऊपर समाधान के साथ कुछ मुसीबतों था संभाल कर सकते हैं। यह आपकी स्कीमा में प्रत्येक तालिका देना चाहिए:

SELECT 
    table_name 
FROM 
    all_tables 
WHERE 
    table_name = '<your table here>' 
+0

ध्यान दें कि तालिका नाम ऊपरी मामला होना चाहिए, भले ही आपने बनाया हो अपरकेस के बिना टेबल। – Elmue

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