[firebase-br] Fw: Duvida nos Tipos de dados do FireBird

eduardo eduardo em icontroller.com.br
Ter Jul 26 17:35:13 -03 2005


Oi Augusto:

> Não é questão de pressa. Pensei que não tinha me expressado bem, pelo
> fato da duvida não ser tivial. 

Eu estava brincando. Esta pequena besta aí embaixo vai te dar com o que 
brincar. Substitua o :P! na úlitma linha pelo nome de uma tabela sua e 
veja o resultado.

SELECT DISTINCT
	A.RDB$FIELD_POSITION   AS ORDER_ID,
	A.RDB$FIELD_NAME AS F_NAME,
	CASE
		WHEN C.RDB$TYPE_NAME='LONG'  THEN 'INTEGER'
		WHEN C.RDB$TYPE_NAME='SHORT' THEN 'SMALLINT'
		WHEN C.RDB$TYPE_NAME='INT64' THEN 
'NUMERIC('||CAST(B.RDB$FIELD_PRECISION AS 
VARCHAR(2))||','||CAST(B.RDB$FIELD_SCALE*-1 AS VARCHAR(2))||')'
		WHEN C.RDB$TYPE_NAME='VARYING' THEN 
'VARCHAR('||B.RDB$CHARACTER_LENGTH||')'
		WHEN C.RDB$TYPE_NAME='TEXT' THEN 'CHAR('||B.RDB$CHARACTER_LENGTH||')'
		WHEN C.RDB$TYPE_NAME='BLOB' THEN 'BLOB SUB_TYPE 
'||CAST(B.RDB$FIELD_SUB_TYPE AS CHAR(1))
	ELSE
		C.RDB$TYPE_NAME
	END AS F_TIPO,
	CASE
		WHEN A.RDB$NULL_FLAG IS NULL  THEN ''
	ELSE
		'NOT NULL'
	END AS F_NULL,
	F.RDB$FIELD_NAME AS F_PRIMARY
FROM
	RDB$RELATION_FIELDS
		A
	LEFT JOIN RDB$FIELDS
		B ON A.RDB$FIELD_SOURCE=B.RDB$FIELD_NAME
	LEFT JOIN RDB$TYPES
		C ON C.RDB$FIELD_NAME='RDB$FIELD_TYPE' AND B.RDB$FIELD_TYPE=C.RDB$TYPE
	LEFT JOIN RDB$RELATION_CONSTRAINTS
		E ON A.RDB$RELATION_NAME=E.RDB$RELATION_NAME AND 
E.RDB$CONSTRAINT_TYPE='PRIMARY KEY'
	LEFT JOIN RDB$INDEX_SEGMENTS
		F ON E.RDB$INDEX_NAME=F.RDB$INDEX_NAME AND 
A.RDB$FIELD_NAME=F.RDB$FIELD_NAME
WHERE
	A.RDB$RELATION_NAME = :P1





Mais detalhes sobre a lista de discussão lista