2014-11-04 1 views
1

실행하기 전에 쿼리의 반환 형식을 출력 할 수있는 관계형 데이터베이스가 있습니까? 예를 들어, GIVE_TYPES SELECT name, age FROM person과 같은 쿼리는 실제로 쿼리를 실행하지 않고 VARCHAR(255), INTEGER과 같은 결과를 제공합니다. 이것이 가능하지 않다면 왜 그런 경우입니까?Typecheck SQL 쿼리

EDIT 첫 번째 의견은 약간 더 복잡한 사용 사례를 제공해야한다는 것을 알게되었습니다. 쿼리가 다음과 같은 경우를 상상해보십시오.

SELECT parent_name, COUNT(name) FROM person GROUP BY parent_name; 

모든 부모의 이름과 보유한 자녀 수를 선택하십시오. 나는 이것에 대한 결과로 VARCHAR(255), INTEGER과 같은 것을 기대할 것이다. 그러나 컬럼 검사는 COUNT의 리턴 타입에 대해 알려주지 않을 것이다.

+0

"사람으로부터 열 표시"를 호출하여 사람 테이블의 모든 열 유형을 표시 할 수 있습니다. 어떤 테이블에서도이 작업을 수행 할 수 있습니다. 이 쿼리가 가능한지 확실하지 않습니다. – jzila

+0

SQL Server에서 정보 스키마 뷰를 쿼리하여 테이블의 열의 데이터 형식을 가져올 수 있습니다. –

+0

어떤 DBMS를 사용하고 있습니까? 포스트그레스? 신탁? 그리고 어떤 프로그래밍 언어를 사용하고 있습니까? –

답변

0

당신이 persistent와 esqueleto의 최상위에서 돌아가고 있다면, 나는 이런 종류의 정보에 간단한 접근을 할 수 없을 것이라고 생각합니다. 특히, 인식 할 수없는 PostgreSQL 유형이 Haskell String 또는 Text에 매핑되는 것으로 가정합니다. 당신이 할 수있는 최선의 소개

은 다음과 같습니다

  1. 가 WHERE TABLE_NAME = 'T1'과 SCHEMA_NAME = ...
  2. DROP INFORMATION_SCHEMA.COLUMNS FROM LIMIT 0
  3. SELECT * AS 임시 테이블 T1을 CREATE TABLE t1;

테이블 t1의 임시 스키마 이름 (pg_temp_xxx 형식)을 식별하려고합니다.

이 정보 (유형 정보의 정보 스키마에 대한 일부 후속 쿼리)는 결과 집합의 모든 열에 대한 세부 정보를 제공해야합니다.