jueves, 7 de septiembre de 2017

Genera Mapeo

SET nocount  ON
SET CONCAT_NULL_YIELDS_NULL off;
Declare @TableName varchar(250);
Declare @Entity varchar(max);
Declare @Propertys varchar(max);
Declare @Property varchar(max);
Declare @Types varchar(max);
Declare @Type varchar(max);
Declare @TableAux table(id int identity(1,1), columnname varchar(250) , typecolumn varchar(250), isnullable varchar(5),tamanio varchar(5) );
Declare @i int;
Declare @Count int;
Declare @Columnname varchar(250);
Declare @Columntype varchar(250);
Declare @isnullable varchar(5);
Declare @Columns varchar(max);

Declare @RowData varchar(max);
Declare @RowDataAux varchar(max);
Declare @LenRowData int;

set @TableName = 'H_laboral';
set @i = 1;

Insert into @TableAux
select column_name,data_type,is_nullable,character_maximum_length from INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @TableName;
set @Count = @@ROWCOUNT;

--Select * from INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'H_Laboral';

while (@i <= @Count)
begin
 select @Columnname = columnname, @Columntype = typecolumn, @isnullable = isnullable from @TableAux where id = @i;

 if(@Columntype = 'varchar')
 Begin
    Set @Columntype = 'string'
 End

 if(@Columntype = 'datetime')
 Begin
    Set @Columntype = 'DateTime'
 End

 if(@Columntype = 'numeric')
 Begin
    Set @Columntype = 'Double'
 End

 if(@Columntype = 'bit')
 Begin
    Set @Columntype = 'bool'
 End

 if(@Columntype = 'smallint')
 Begin
    Set @Columntype = 'Int16'
 End

 if @i = 1
    begin
        set @Columns = @Columns + @Columnname
    end
    else
    begin
        set @Columns = @Columns +  CHAR(13) + ',' + @Columnname
    end
   
  if(@Columntype='string')
 begin
     set @Property = @Columnname
         set @Type = @Columntype    
        set @LenRowData = (SELECT DATALENGTH(@RowData))

        if @LenRowData >= 7900
        begin
            --Esta variable solo se llena si la la variable @RowData alcanza su limite de carcateres
            set @RowDataAux = 'CONTINUA AQUI...' + CHAR(13) + @RowDataAux + LOWER(@TableName) + '.' + @Property + ' = dataReader.IsDBNull(dataReader.GetOrdinal("' + @Property + '")) ? null : dataReader["' + @Property + '"].ToString();' + CHAR(13)
        end
        else
        begin
            set @RowData = @RowData + LOWER(@TableName) + '.' + @Property + ' = dataReader.IsDBNull(dataReader.GetOrdinal("' + @Property + '")) ? null : dataReader["' + @Property + '"].ToString();' + CHAR(13)
        end       
 end   
 else
 begin
     if(@isnullable='YES')
     begin
        set @Property = @Columnname
         set @Type = @Columntype + '?'                     
        set @LenRowData = (SELECT DATALENGTH(@RowData))

        if @LenRowData >= 7900
        begin
            --Esta variable solo se llena si la la variable @RowData alcanza su limite de carcateres
            set @RowDataAux = 'CONTINUA AQUI...' + CHAR(13) + @RowDataAux + LOWER(@TableName) + '.' + @Property + ' = dataReader.IsDBNull(dataReader.GetOrdinal("' + @Property + '")) ? default(' + @Type + ') : ' + SUBSTRING(@Type, 1, Len(@Type) - 1) + '.Parse(dataReader["' + @Property + '"].ToString());' + CHAR(13)
        end
        else
        begin
            set @RowData = @RowData + LOWER(@TableName) + '.' + @Property + ' = dataReader.IsDBNull(dataReader.GetOrdinal("' + @Property + '")) ? default(' + @Type + ') : ' + SUBSTRING(@Type, 1, Len(@Type) - 1) + '.Parse(dataReader["' + @Property + '"].ToString());' + CHAR(13)
        end       
     end
     else
     begin
         set @Property = @Columnname
         set @Type = @Columntype
        set @LenRowData = (SELECT DATALENGTH(@RowData))

        if @LenRowData >= 7900
        begin
            --Esta variable solo se llena si la la variable @RowData alcanza su limite de carcateres
            set @RowDataAux = 'CONTINUA AQUI...' + CHAR(13) + @RowDataAux + LOWER(@TableName) + '.' + @Property + ' = dataReader.IsDBNull(dataReader.GetOrdinal("' + @Property + '")) ? default(' + @Type + ') : ' + @Type + '.Parse(dataReader["' + @Property + '"].ToString());' + CHAR(13)
        end
        else
        begin
            set @RowData = @RowData + LOWER(@TableName) + '.' + @Property + ' = dataReader.IsDBNull(dataReader.GetOrdinal("' + @Property + '")) ? default(' + @Type + ') : ' + @Type + '.Parse(dataReader["' + @Property + '"].ToString());' + CHAR(13)
        end           
     end
 end

--set @Types = @Types + @Type + CHAR(13)
--set @Propertys = @Propertys + @Property + CHAR(13)
set @i = @i + 1;
end;

--print @Types
--print @Propertys
print LOWER(@TableName) + ' = new '
print @RowData
print @RowDataAux


No hay comentarios.:

Publicar un comentario