中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > Web开发 > Asp > 综合文章
查找Table中的单个列长度并判断是否属于改表(存储过程)
作者:未知 时间:2004-08-21 12:12 出处:Blog 责编:chinaitpower
              摘要:暂无

   做程序有时候,要判断某列是否属于操作表,对比有些烦就写了一个存储过程。

create  proc Pr_getTableColumnLen
(
--传入的表名和列名
@inTableName varchar(20),
@inColumnName varchar(20),

--传入的标志变量和内容变量
@lenContent varchar(200),
@flag varchar(1)
)

as

--内部变量
declare
@rColumnName varchar(20),
@rColumnType varchar(10),
@rColumnByte int,
@rColumnNullStatus varchar(1),
@rTemp varchar(10),
@rTempStr varchar(100)

--start1
--如果存在判断存入数据是否合格
--查找当前列,是否存在
SELECT @rTemp=len(COLUMNPROPERTY( OBJECT_ID(@inTableName),@inColumnName,'PRECISION'))
if(@rTemp > 0)
      begin
 select @rColumnName=a.name   from syscolumns a,systypes b where a.id =object_id(@inTableName) and a.xtype = b.xtype and a.name=@inColumnName
 select @rColumnNullStatus=case a.isnullable when 1 then 'Y' else 'N' end   from syscolumns a,systypes b where a.id =object_id('publicnotice') and a.xtype = b.xtype and a.name=@inColumnName
 select @rColumnType=b.name   from syscolumns a,systypes b where a.id =object_id(@inTableName) and a.xtype = b.xtype and a.name=@inColumnName
 select @rColumnByte=a.length   from syscolumns a,systypes b where a.id =object_id(@inTableName) and a.xtype = b.xtype and a.name=@inColumnName
         --‘H’是中文判断
     if(upper(@flag) ='H')
        begin 
     if(len(@lenContent) > @rColumnByte/2)
        begin
          set @rTempStr = ('出错提示:列('+ @rColumnName + ') 类型是 ' + @rColumnType + ' 可存储(' + cast(@rColumnByte/2 as varchar(10)) + ')个汉字' + ' 可否为空 ' + @rColumnNullStatus)
             end
                else
              begin
           set @rTempStr = 'Y'
                  end
       end
   else
         --其他默认为英文
     begin
       if(len(@lenContent) > @rColumnByte)
         begin
          set  @rTempStr = ('出错提示:列('+ @rColumnName + ') 类型是(' + @rColumnType + ') 可存储(' + cast(@rColumnByte as varchar(10)) + ')个字符' + ' 可否为空(' + @rColumnNullStatus + ')')
          end
             else
          begin
             set @rTempStr = 'Y'  
          end 
      end
      end
else
      begin
        set @rTempStr =( '(' + @inColumnName + ') 是无效列')
      end 

--start1End

--start2,用临时表得到数据
create table #temTable (result varchar(100))
insert into #temTable values(@rTempStr)
select * from #temTable

--start2End

--程序员 2004-08-21晚

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有