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

原创 2004年08月21日 19:51:00

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

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晚

删除前先判断指定的表或者存储过程是否存在if exists

ORACLE、SQL SERVER删除前先判断指定的表或者存储过程是否存在if exists
  • S630730701
  • S630730701
  • 2016-09-13 15:38:35
  • 2658

查找存储过程,判断mysql是否存在此列

DROP PROCEDURE IF EXISTS p7;    --防止数据库中有这个存储过程,先删掉      CREATE PROCEDURE p7()   BEGIN          DECL...
  • nextop88
  • nextop88
  • 2017-12-07 12:54:46
  • 121

lua中判断table中是否包含某个值

步骤: 1.遍历table 2.判断table中是否包含某个值function is_include(value, tab) for k,v in ipairs(tbl) do ...
  • xiejunna
  • xiejunna
  • 2017-05-15 15:37:09
  • 3709

SQL SERVER 删除前先判断指定的表或者存储过程是否存在

1、创建存储过程:CREATE PROCEDURE proc_pr ---将create修改成alter可以修改存储过程; AS BEGIN IF EXISTS(SELECT * FROM sy...
  • baidu_32731497
  • baidu_32731497
  • 2016-06-05 19:59:56
  • 3098

Postgresql 9.4 判断表是否存在...

就一函数:    SELECT to_regclass('tablename') is not null 不管是物理表还是临时表都有效....
  • rocklee
  • rocklee
  • 2016-12-07 15:19:06
  • 1858

sqlserver 快速查询存储过程是否用到某个表或者字段

  • 2015年06月15日 15:52
  • 73B
  • 下载

判断某个列名是否在DataTable中存在的例子

 使用 DataTable.Columns.Contains方法可以判断某个列名是否存在于某个DataTable中            DataTable t = new DataTable(); ...
  • eaglet
  • eaglet
  • 2007-08-17 23:09:00
  • 16200

Mysql检查列是否存在并新增、修改、删除列

在MYSQL中,新增、修改、删除列时不能进行IF EXISTS判断,IF语句只能出现在存储过程当中,故博主用存储过程的方法新增、修改、删除列,修改列名称。 DROP PROCEDURE IF EXIS...
  • huangjin0507
  • huangjin0507
  • 2015-10-22 10:56:19
  • 6459

mysql检查数据库是否存在某列,若不存在则添加

mysql检查列是否存在自动添加
  • shihengzhen101
  • shihengzhen101
  • 2014-04-27 18:03:07
  • 3082

jquery获取table整列的值并判断

var row = "${fn:length(jslist)}";//行数 if(row=='')return false; row = parseInt(row)+1; va...
  • cqrf2006
  • cqrf2006
  • 2015-01-22 15:41:42
  • 1224
收藏助手
不良信息举报
您举报文章:查找Table中的单个列长度并判断是否属于改表(存储过程)
举报原因:
原因补充:

(最多只允许输入30个字)