June 6, 2012

sp_pkeys (Transact-SQL MetaData) Definition

Please note: that the following source code is provided and copyrighted by Microsoft and is for educational purpose only.
The meta data is from an SQL 2012 Server.

I have posted alot more, find the whole list here.

Goto Definition or MetaData

Definition:

sys.sp_pkeys(nvarchar @table_name
, nvarchar @table_owner
, nvarchar @table_qualifier)

MetaData:

   
create procedure sys.sp_pkeys
(
@table_name sysname,
@table_owner sysname = null,
@table_qualifier sysname = null
)
as
declare @table_id int
-- quotename() returns up to 258 chars
declare @full_table_name nvarchar(517) -- 258 + 1 + 258

if @table_qualifier is not null
begin
if db_name() <> @table_qualifier
begin -- If qualifier doesn't match current database
raiserror (15250, -1,-1)
return
end
end

if @table_owner is null
begin -- If unqualified table name
select @full_table_name = quotename(@table_name)
end
else
begin -- Qualified table name
if @table_owner = ''
begin -- If empty owner name
select @full_table_name = quotename(@table_owner)
end
else
begin
select @full_table_name = quotename(@table_owner) + '.' + quotename(@table_name)
end
end

select @table_id = object_id(@full_table_name)

select
TABLE_QUALIFIER = convert(sysname,db_name()),
TABLE_OWNER = convert(sysname,schema_name(o.schema_id)),
TABLE_NAME = convert(sysname,o.name),
COLUMN_NAME = convert(sysname,c.name),
KEY_SEQ = convert (smallint,
case
when c.name = index_col(@full_table_name, i.index_id, 1) then 1
when c.name = index_col(@full_table_name, i.index_id, 2) then 2
when c.name = index_col(@full_table_name, i.index_id, 3) then 3
when c.name = index_col(@full_table_name, i.index_id, 4) then 4
when c.name = index_col(@full_table_name, i.index_id, 5) then 5
when c.name = index_col(@full_table_name, i.index_id, 6) then 6
when c.name = index_col(@full_table_name, i.index_id, 7) then 7
when c.name = index_col(@full_table_name, i.index_id, 8) then 8
when c.name = index_col(@full_table_name, i.index_id, 9) then 9
when c.name = index_col(@full_table_name, i.index_id, 10) then 10
when c.name = index_col(@full_table_name, i.index_id, 11) then 11
when c.name = index_col(@full_table_name, i.index_id, 12) then 12
when c.name = index_col(@full_table_name, i.index_id, 13) then 13
when c.name = index_col(@full_table_name, i.index_id, 14) then 14
when c.name = index_col(@full_table_name, i.index_id, 15) then 15
when c.name = index_col(@full_table_name, i.index_id, 16) then 16
end),
PK_NAME = convert(sysname,k.name)
from
sys.indexes i,
sys.all_columns c,
sys.all_objects o,
sys.key_constraints k
where
o.object_id = @table_id and
o.object_id = c.object_id and
o.object_id = i.object_id and
k.parent_object_id = o.object_id and
k.unique_index_id = i.index_id and
i.is_primary_key = 1 and
(c.name = index_col (@full_table_name, i.index_id, 1) or
c.name = index_col (@full_table_name, i.index_id, 2) or
c.name = index_col (@full_table_name, i.index_id, 3) or
c.name = index_col (@full_table_name, i.index_id, 4) or
c.name = index_col (@full_table_name, i.index_id, 5) or
c.name = index_col (@full_table_name, i.index_id, 6) or
c.name = index_col (@full_table_name, i.index_id, 7) or
c.name = index_col (@full_table_name, i.index_id, 8) or
c.name = index_col (@full_table_name, i.index_id, 9) or
c.name = index_col (@full_table_name, i.index_id, 10) or
c.name = index_col (@full_table_name, i.index_id, 11) or
c.name = index_col (@full_table_name, i.index_id, 12) or
c.name = index_col (@full_table_name, i.index_id, 13) or
c.name = index_col (@full_table_name, i.index_id, 14) or
c.name = index_col (@full_table_name, i.index_id, 15) or
c.name = index_col (@full_table_name, i.index_id, 16))

order by 1, 2, 3, 5

No comments:

Post a Comment

Total Pageviews