반응형
데이터베이스에 테이블이 있는지 확인 - PL SQL
저는 PL SQL 신입인데 서버에 테이블이 있는지 확인하고 떨어뜨려야 합니다.
잘 부탁드립니다, 고란 씨.
테이블 이름을 쿼리할 수 있습니다.
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');
그 정도면 충분히 갈 수 있을 겁니다.
OPS 제가 원래 포스터 질문을 잘못 읽은 것 같습니다.저는 Postgre를 위해 대답했습니다.SQL.
피터야.
가장 효율적인 방법은 하지 않는 것입니다.탁자를 내려놔요.테이블이 아직 존재하지 않는 경우 예외가 발생합니다.
테이블을 놓기 직전에 쿼리를 실행하는 것은 Oracle이 자동으로 수행하는 작업을 수행하는 데 시간을 낭비하는 것입니다.
예외는 원하는 대로 처리할 수 있습니다. 예:
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;
제 DB가 트리 구조가 특이해서 위의 솔루션에 문제가 있었습니다.이렇게 하면 스키마의 모든 테이블이 표시됩니다.
SELECT
table_name
FROM
all_tables
WHERE
table_name = '<your table here>'
언급URL : https://stackoverflow.com/questions/3525448/check-if-table-exists-in-the-database-pl-sql
반응형
'programing' 카테고리의 다른 글
jquery 정렬 가능한 자리 표시자 높이 문제 (0) | 2023.08.19 |
---|---|
Oracle에서 범위 파티션을 만들기 위해 기존 테이블을 변경하는 방법 (0) | 2023.08.19 |
Gitrepo에서 파일을 정리하지 못했습니다. 새 백업을 만들 수 없습니다. (0) | 2023.08.14 |
Amazon AWS 람다와 함께 Spring boot/cloud를 사용해도 값이 주입되지 않습니다. (0) | 2023.08.14 |
Git: 로컬 레포가 최신 상태인지 확인하는 방법은 무엇입니까? (0) | 2023.08.14 |