本小抄仅供参考,不保证内容的正确与完整 ,大部分内容来自网络
获取数据库中某元素的信息 ,可用于检测 表 ,存储过程,触发器等是否存在
运行环境:SQLServer2000
select * from sysobjects where name='表名,存储过程名等' and xtype='类型名'
select * from syscolumns ----所有列的信息,id为表ID
select COL_LENGTH('sysobjects','name') ----结果为256
select COL_LENGTH('sysobjects','xxx') ----结果是NULL 可以用于判断 列 是否 存在
C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
L = 日志
FN = 标量函数
IF = 内嵌表函数
P = 存储过程
PK = PRIMARY KEY 约束(类型是 K)
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
UQ = UNIQUE 约束(类型是 K)
V = 视图
X = 扩展存储过程
-------------------------------------------------------------------------------------------
在存储过程中执行变量保存的sql语句
运行环境:SQLServer2000
execute ('create table '+@TableName+' '+@table_sql)
-------------------------------------------------------------------------------------------
错误提示 因为该值的排序规则因排序规则冲突而未能解决
另外一个问题:无法解决 equal to 操作的排序规则冲突,也是同样原因
运行环境:SQLServer2000
select co1+co2 from xxx
表创建语句
create table xxx
(
[col1] [varchar] (9) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[col2] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL
)
改为
create table xxx
(
[col1] [varchar] (9) COLLATE Chinese_PRC_CI_AS NULL ,
[col2] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL
)
或者都改为 SQL_Latin1_General_CP1_CI_AS
无法解决 equal to 操作的排序规则冲突
WHERE 列名 collate Chinese_PRC_CI_AS