CREATE PROCEDURE dbo.T_GetTablePKey
@TableName varchar(50) output,
ASEXEC sp_pkeys @table_name=@TableNamego
declare @TableName varchar(50)
exec T_GetTablePKey @TableName output
--说明执行exec T_GetTablePKey @TableName output后@tableName就获得了你想要的值了。
@TableName varchar(50) output,
ASEXEC sp_pkeys @table_name=@TableNamego
declare @TableName varchar(50)
exec T_GetTablePKey @TableName output
--说明执行exec T_GetTablePKey @TableName output后@tableName就获得了你想要的值了。
我把上面的代码复制进去执行得不结果.其实我是想
表名做为参数
得到表的主键的字段名我用EXEC sp_pkeys @table_name='T_BookSort'执行后会返回一条记录
里面有COLUMN_NAME,我想把这个字段的数据取过来.好像我用存储过程
ALTER PROCEDURE dbo.T_GetTablePKey
@TableName varchar(50) output
AS
EXEC sp_pkeys @table_name=@TableName表名参数我用T_BookSort,得不到结果...
获取指定表的主键列表
调用:
declare @tableName varchar(20),@pkNames varchar(100)
set @tableName='表名'
exec T_GetTablePKey @tableName,@pkNames out
select @pkNames
*/
CREATE PROCEDURE dbo.T_GetTablePKey
@TableName varchar(50),
@pkNames varchar(100) output
ASdeclare @r varchar(1000)
set @r=''
SELECT @r=@r+','+COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME=@TableName and CONSTRAINT_NAME like 'pk%'
set @pkNames=stuff(@r,1,1,'')go
(
TABLE_QUALIFIER sysname,
TABLE_OWNER sysname,
TABLE_NAME sysname,
COLUMN_NAME sysname,
KEY_SEQ int,
PK_NAME sysname
)
insert # exec sp_pkeys h_infoselect [主键名]=C.COLUMN_NAME,[类型]=B.name
from syscolumns A
join systypes B on A.xtype=B.xtype
join # C on A.name=C.COLUMN_NAME
where A.id=object_id('h_info')--删除测试环境
drop table #--结果
/*
主键名 类型
---------------- ---------
Bianhao varchar(所影响的行数为 1 行)