[firebase-br] Descobrir o tamanho do campo - duvida
Anderson - EasyBit
anderson em easybit.com.br
Sex Mar 2 13:00:43 -03 2007
At 11:44 2/3/2007, Welson Avelar wrote:
>Olá amigos, tudo bom !?
>Eu preciso criar um atualizador pra um cliente e também modificar o tamanho de
>um campo no banco de dados. (...)
>Mas como eu faço isso, ou seja, como descubro o tamanho do campo !?
Ola Welson, td bem?
Essa select ai abaixo (acho q foi desenvolvida
pelo JedLiska), te da a estrutura da tabela
completa. Daí você pode identificar os dados do campo que deseja alterar.
Espero que ajude,
Anderson
//OBTENDO A ESTRUTURA DE UMA TABELA
SELECT DISTINCT
A.RDB$FIELD_POSITION AS ORDER_ID,
A.RDB$FIELD_NAME AS F_NAME,
B.RDB$FIELD_TYPE,
B.RDB$FIELD_SCALE,
CASE
WHEN B.RDB$FIELD_PRECISION > 0 THEN
'NUMERIC('||CAST(B.RDB$FIELD_PRECISION AS
VARCHAR(2))||','||CAST(B.RDB$FIELD_SCALE*-1 AS VARCHAR(2))||')'
WHEN C.RDB$TYPE_NAME='LONG' THEN 'INTEGER'
WHEN C.RDB$TYPE_NAME='SHORT' THEN 'SMALLINT'
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 = 'nome_da_tabela'
Mais detalhes sobre a lista de discussão lista