摘要:
--重排编码的存储过程CREATE PROC p_RTaxisCode@TableName sysname, --重排编码的表名@FieldName sysname, --编码字段名@CodeRule varchar(100) --以逗号分隔的编码规则,每层编码的长度,比如1,2,3,表示有三层编码,第一层长度为1,第二层长度为2,第三层长度为3AS--参数检查IF ISNULL(OBJECTPROPERTY(OBJECT_ID(@TableName),N'IsUserTable'),0)=0BEGINRAISERROR(N'"%s"不存在,或者不是 阅读全文
摘要:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_changeusertype]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[p_changeusertype]GO/*--存储过程功能说明修改当前库中定义的用户定义数据类型的长度及精度并自动修改所有的表/视图/存储过程/触发器/自定义函数中的对应定义由于数据库的复杂性,建议修改前先备份--作者:邹建 2004.06--*//*--调 阅读全文
摘要:
/*--修改自定义数据类型精度的示例假设要修改的自定义变量名为aa--*/--1.修改自定义变量类型的名称exec sp_rename 'aa','aa_bak','USERDATATYPE'go--2.新增自定义变量(按新的精度)EXEC sp_addtype N'aa', N'numeric(20,2)', N'not null'go--3.修改表,使用新增的自定义变量declare @s varchar(8000)declare tb cursor local for select ' 阅读全文
摘要:
CREATE PROC p_CheckCntUNICODE@flag bit=0 --1=转换为UNICODE后,字段长度/2,<>1转换时使用旧长度,只查询定义长度超过4000,而且有记录超过此长度的表+列ASSET NOCOUNT ON--定义保存查询结果的表CREATE TABLE #(TableName sysname,FieldName sysname,Type sysname,SQL nvarchar(4000))--查询处理DECLARE tb CURSOR LOCALFORSELECT N'SELECT '+QUOTENAME(c.name)+N 阅读全文
摘要:
CREATE PROC p_DropIDENTITY@TableName sysname --要处理的表名ASIF ISNULL(OBJECTPROPERTY(OBJECT_ID(@TableName),N'IsUserTable'),0)=0BEGINRAISERROR('"%s" 必须是当前数据库中已经存在的用户表',12,16,@TableName)RETURNEND--标识列转换处理检查DECLARE @s nvarchar(1000),@FieldName sysname,@bkFieldName sysname,@sql nvar 阅读全文
摘要:
CREATE PROC sp_ValueSearch@value sql_variant, --要搜索的数据@precision bit=1 --1=仅根据sql_variant中的数据类型查找对应类型的数据列.<>1,查询兼容的所有列,字符数据使用like匹配ASSET NOCOUNT ONIF @value IS NULL RETURN--数据类型处理SELECT xtype INTO #t FROM systypesWHERE name=SQL_VARIANT_PROPERTY(@value,N'BaseType')--扩展数据类型及查询处理语句DECLARE 阅读全文
摘要:
--要删除的列的数据类型DECLARE @fieldtype sysnameSET @fieldtype='varchar'--删除处理DECLARE hCForEach CURSOR GLOBALFORSELECT N'ALTER TABLE '+QUOTENAME(o.name)+N' DROP COLUMN '+QUOTENAME(c.name)FROM sysobjects o,syscolumns c,systypes tWHERE o.id=c.id AND OBJECTPROPERTY(o.id,N'IsUserTable& 阅读全文
摘要:
--测试表及数据CREATE TABLE tb(Col varchar(10))INSERT tb SELECT '1900-1-1'UNION ALL SELECT '19aa-1-1'GOSELECT * FROM tb WHERE ISDATE(Col)=1AND Col<GETDATE()GO--建立索引CREATE INDEX IDX_tb_Col ON tb(Col)GOSELECT * FROM tb WHERE ISDATE(Col)=1AND Col<GETDATE()GO--删除测试DROP TABLE tb 阅读全文
摘要:
--测试数据CREATE TABLE tb(a int,b int,c int)CREATE CLUSTERED INDEX IDX_tb_a ON tb(a)CREATE INDEX IDX_tb_b ON tb(b)CREATE INDEX IDX_tb_c ON tb(c)INSERT tb SELECT 1,3,2INSERT tb SELECT 2,2,1INSERT tb SELECT 3,1,3--指定使用字段a上的索引SELECT * FROM tb WITH(INDEX=IDX_tb_a)/*--结果a b c---------------- ---------------- 阅读全文