zoukankan      html  css  js  c++  java
  • sqlserver存储过程获取包含标识列(自增列)的所有表名

    直接上代码吧,主要包含两个重要的对象或方法,一个是SYS.TABLES,一个是OBJECTPROPERTY。具体用法不做展开。

    /*
    ** 检查数据库中表是否有标识列
    ** 以打印的方式输出
    **/
    ALTER PROCEDURE [dbo].[YJ_CHECK_TABLE_PK]
    AS
    BEGIN
    	--存储表名
    	DECLARE @TABLE_NAME VARCHAR(100) = '';
    	--表是否有标识列,1有0无
    	DECLARE @PK_TAG NUMERIC = -99;
    	--获取所有表名的游标
    	DECLARE CUR_CHECK CURSOR FOR SELECT NAME FROM SYS.TABLES;
    	OPEN CUR_CHECK ;
    	FETCH NEXT FROM CUR_CHECK INTO @TABLE_NAME;
    	WHILE @@fetch_status<>-1
    		BEGIN
    				SELECT @PK_TAG = OBJECTPROPERTY(OBJECT_ID(@TABLE_NAME),'TableHasIdentity');
    				IF(@PK_TAG=0)
    					BEGIN
    						PRINT UPPER(@TABLE_NAME) + ' 没有标识列'
    					END
    				/*
    				ELSE IF(@PK_TAG=1)
    					BEGIN
    						PRINT @TABLE_NAME + ' 有标识列'
    					END
    				ELSE 
    					BEGIN
    						PRINT 'ERROR OCCURED'
    					END
    				*/
    				FETCH NEXT FROM CUR_CHECK INTO @TABLE_NAME;
    		END
    END

    运行结果截图:



  • 相关阅读:
    家庭作业有益吗?
    视图、触发器、事务、存储过程、函数
    Navicat使用和pymysql
    表查询
    外键
    MySQL表操作
    进程池线程池、协程
    全局解释器锁及其他用法
    线程
    进程
  • 原文地址:https://www.cnblogs.com/jerryyj/p/9621549.html
Copyright © 2011-2022 走看看