none
Query - Retorno de tipo de dados da coluna RRS feed

  • Pergunta

  • Boa tarde pessoal,

     

    Estou precisando fazer uma query que me retorne o tipo de dados de um campo e se ele é ident ou não.

     

    Se alguém puder dar um help fico grato.

     

    tks,

    Mura

    quarta-feira, 14 de novembro de 2007 17:25

Respostas

  • Boa tarde Rick, dá uma olhada no exemplo qualquer coisa retorne.

     

    Select A.Name as Campo,B.Name as Tipo,A.Length as Tamanho,

    Case When ColumnProperty(Object_id('NOMEDASUATABELA'),A.Name,'IsIdentity') = 0 then 'Não' Else 'Sim' End as [Identity ?]

    From SysColumns A

    Inner Join SysTypes B On B.XType = A.XType

    Where A.Id = Object_id('NOMEDASUATABELA')

     

     

     

    Espero ter ajudado

     

    quarta-feira, 14 de novembro de 2007 17:57

Todas as Respostas

  • Rick,

     

    Somente de um determinado campo ou de todos que compõem uma table?

     

    Já tentou utilizar a table sysobjects, syscolumns ou até mesmo o INFORMATION_SCHEMA.COLUMNS?

    quarta-feira, 14 de novembro de 2007 17:46
  • Junior,

     

    O INFORMATION_SCHEMA.COLUMNS retorna o tipo do campo mas não retorna se ele é identity ou não. Também pensei em postar essa.. Mas essa são só 50%

    rsrsrsrsrsrs

     

    Abaixo um exemplo do uso da view.

     

    SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'minha_tabela'

     

    Abraço,

     

    chapolin.rio@gmail.com

     

    quarta-feira, 14 de novembro de 2007 17:53
  • Boa tarde Rick, dá uma olhada no exemplo qualquer coisa retorne.

     

    Select A.Name as Campo,B.Name as Tipo,A.Length as Tamanho,

    Case When ColumnProperty(Object_id('NOMEDASUATABELA'),A.Name,'IsIdentity') = 0 then 'Não' Else 'Sim' End as [Identity ?]

    From SysColumns A

    Inner Join SysTypes B On B.XType = A.XType

    Where A.Id = Object_id('NOMEDASUATABELA')

     

     

     

    Espero ter ajudado

     

    quarta-feira, 14 de novembro de 2007 17:57
  • Somente uma coluna.

     

    Tenho isso hoje:

    Select syscolumns.name,syscolumns.type from sysobjects inner join syscolumns on sysobjects.id=syscolumns.id where sysobjects.name = 'NOMEDATABELA' and syscolumns.colid=1

     

    Mas preciso adicionar a informação de ident na query e não sei como fazer.

    quarta-feira, 14 de novembro de 2007 18:27
  • Rick

     

    Acabei de criar um procedure aqui para o que vc quer. Ve se ter serve!!

    Vamos torcer que sim!!!!!!!!!!!!!!!!!!!

    Tive um trabalhinho aqui se te servir marca ess post aí com resposta heim!!!!!!!!!

    HAHAHAHAHAHAHAHAHA

     

    Abraço amigo,

     

    chapolin.rio@gmail.com

     

     

    CREATE PROCEDURE usp_Tipo_campo_Retornar

    (

    @objname VARCHAR(776)

    )

    AS

    SET NOCOUNT OFF

    DECLARE @colname SYSNAME,

    @objid INT,

    @sysobj_type CHAR(2)

     

    SELECT @objid = id,

    @sysobj_type = xtype

    FROM SYSOBJECTS

    WHERE id = OBJECT_ID(@objname)

    SELECT @colname = name

    FROM SYSCOLUMNS WHERE id = @objid

    AND colstat & 1 = 1

    SELECT

    'Nome_campo' = ISNULL(@colname,'No identity column defined.'),

    'Velocidade' = IDENT_SEED(@objname),

    'Incremento' = IDENT_INCR(@objname),

    'Replicar' = COLUMNPROPERTY(@objid, @colname, 'IsIDNotForRepl'),

    'Tipo_Dado' = information_schema.columns.data_type

    FROM information_schema.columns

    WHERE table_name = @objname

    AND column_name = @colname

    UNION ALL

    SELECT

    'Nome_campo' = information_schema.columns.column_name,

    'Velocidade' = IDENT_SEED(information_schema.columns.column_name),

    'Incremento' = NULL,

    'Replicar' = COLUMNPROPERTY(@objid, information_schema.columns.column_name, 'isidnotforrepl'),

    'Tipo_Dado' = information_schema.columns.data_type

    FROM information_schema.columns

    WHERE table_name = @objname

    AND column_name <> @colname

     

     

    Para rodar:

     

    usp_Tipo_campo_Retornar @nometabela

    quarta-feira, 14 de novembro de 2007 18:40
  • Bom eu adaptei um pouco o que o Anderson me passou e pronto, ficou lindo.

     

    Chapollin, caraca meu huahauahau, vlw ae mas eu usei a que o Anderson passou.

     

    tks,

    Mura

    quarta-feira, 14 de novembro de 2007 18:48