• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

查找Table中的单个列长度并判断是否属于改表(存储过程)

发布: 2007-6-30 18:56 | 作者: admin | 来源: | 查看: 12次 | 进入软件测试论坛讨论

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

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

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:[email protected] 电话:010-51297073

软件测试 | 领测国际 | ISTQB | ISTQB官网 | TMMi | TMMi认证 | 国际软件测试工程师认证 | 领测软件测试网