自定义实体的代码自动生成


if ( object_id ( ' generatecode ' ))  is   not   null   drop   proc  generatecode
go
CREATE   proc  generatecode
    
@table   varchar ( 50 )
as

declare   @sqlstr   varchar ( 2000 )    
create   table  #tmp    
(    
    column_name 
varchar ( 20 ),    
    type_name 
varchar ( 20 ),    
    length  
varchar ( 10 )    
)    

create   table  # text (n_text  varchar ( 1000 ))

select   @sqlstr   = '       
insert into #tmp (column_name,type_name,length) select name,type_name,a.prec    
    from syscolumns a ,master.dbo.spt_datatype_info b    
    where id = object_id(N
''' + @table + '''
    and OBJECTPROPERTY(id, N
'' IsUserTable '' ) =1    
    and  a.xtype=b.ss_dtype 
    and  a.length = isnull(b.fixlen, a.length)    
    AND isnull(b.AUTO_INCREMENT,0) = isnull(ColumnProperty (a.id, a.name, 
'' IsIdentity '' ),0)    
    AND (b.ODBCVer is null or b.ODBCVer = 2)    
'      
execute ( @sqlstr )

declare   @name   varchar ( 20 )
declare   @type   varchar ( 20 )
declare  cur  cursor  scroll  for   select  column_name,type_name  from  #tmp
open  cur
fetch   next   from  cur  into   @name , @type
while   @@fetch_status   =   0
begin
    
insert   into  # text   values ( ' private  ' +   case   when   @type = ' varchar '   or   @type = ' nvarchar '   or   @type = ' char '   or   @type = ' text '   or   @type = ' ntext '   then   ' String  '   +   @name   +   ' ; '
                
when   @type = ' int '   or   @type = ' int identity '   then   ' int  '   +   @name   +   ' ; '
                
when   @type = ' datetime '   or   @type = ' smalldatetime '   then   ' DateTime  '   +   @name   +   ' ; '  
                
when   @type = ' bit '   then   ' bool  '   +   @name   +   ' ; '  
                
when   @type = ' decimal '   or   @type = ' numeric '   or   @type = ' money '   or   @type = ' smallmoney '   then   ' decimal  '   +   @name   +   ' ; '  
                
when   @type = ' float '   then   ' double  '   +   @name   +   ' ; '  
                
when   @type = ' binary '   or   @type = ' image '   or   @type = ' varbinary '   or   @type = ' timestamp '   then   ' byte[]  '   +   @name   +   ' ; '  
                
when   @type = ' real '   then   ' single  '   +   @name   +   ' ; '  
                
end
    )
    
fetch   next   from  cur  into   @name , @type
end

fetch  absolute  1   from  cur  into   @name , @type
while   @@fetch_status   =   0
begin
    
insert   into  # text   values ( ' public  ' +   case   when   @type = ' varchar '   or   @type = ' nvarchar '   or   @type = ' char '   or   @type = ' text '   or   @type = ' ntext '   then   ' String  '   +   upper ( @name )
                
when   @type = ' int '   or   @type = ' int identity '   then   ' int  '   +   upper ( @name )
                
when   @type = ' datetime '   or   @type = ' smalldatetime '   then   ' DateTime  '   +   upper ( @name )
                
when   @type = ' bit '   then   ' bool  '   +   upper ( @name
                
when   @type = ' decimal '   or   @type = ' numeric '   or   @type = ' money '   or   @type = ' smallmoney '   then   ' decimal  '   +   @name
                
when   @type = ' float '   then   ' double  '   +   @name
                
when   @type = ' binary '   or   @type = ' image '   or   @type = ' varbinary '   or   @type = ' timestamp '   then   ' byte[]  '   +   @name
                
when   @type = ' real '   then   ' single  '   +   @name
                
end
    )
    
insert   into  # text   values ( ' { ' )
    
insert   into  # text   values ( ' get{return this. '   +   @name   +   ' ;} ' )
    
insert   into  # text   values ( ' set{this. '   +   @name   +   '  = value;} ' )
    
insert   into  # text   values ( ' } ' )
    
fetch   next   from  cur  into   @name , @type
end
close  cur
deallocate  cur
select   *   from  # text
drop   table  #tmp
drop   table  # text
GO

exec  generatecode  ' userinfo '



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1181548

<script src="http://localhost:82/PromoteIcon.aspx?id=1181548" type="text/javascript"></script> [ 点击此处收藏本文]   guoguo19811025发表于 2006年09月05日 21:17:00
href="http://blog.csdn.net/guoguo19811025/Services/Pingback.aspx" rel="pingback" /> <script type="text/javascript">function hide(){showComment();}</script>
<script language="javascript" type="text/javascript"> ad_width=468; ad_height=60; adcss=2; unionuser=13; </script> <script language="javascript" src="http://tagegg.csdn.net/showads.js" type="text/javascript"> </script> <script language="JavaScript1.1" src="http://tagegg.csdn.net/a.aspx?action=displayad&unionuser=13&unionurl=http%3A%2F%2Fblog.csdn.net%2Fguoguo19811025%2Farchive%2F2006%2F09%2F05%2F1181548.aspx&adcss=2&ad_type=c&width=468&height=60&ad_color=&ad_color_border=" type="text/javascript"></script>
<script type="text/javascript">document.write(" ");</script> <script language="javascript" src="/script/js.js" type="text/javascript"></script>
 
emo 发表于2006-09-06 11:53:00  IP: 61.29.197.*
恩,有个小错误,@type='numberic' ,应该是numeric吧?

 
vfp_system 发表于2006-09-06 22:58:00  IP: 58.20.32.*
不错,省了我好多事啦。生成的代码只要小小改动即可用。

 
蝈蝈 发表于2006-09-07 08:12:00  IP: 221.6.19.*
感谢emo帮我指出错误,即刻更改,谢谢!
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值