SQLServerCentral is supported by Red Gate Software Ltd.
 
Log in  ::  Register  ::  Not logged in
Search:  
 
 

A Few Meta Data UDFs

By Alexander Chigrik, 2001/10/17

Total article views: 3965 | Views in the last 30 days: 8


Introduction

I would like to write the series of articles about useful User-Defined Functions grouped by the following categories:

  • Date and Time User-Defined Functions
  • Mathematical User-Defined Functions
  • Metadata User-Defined Functions
  • Security User-Defined Functions
  • String User-Defined Functions
  • System User-Defined Functions
  • Text and Image User-Defined Functions

In this article, I wrote some useful Meta Data User-Defined Functions.

Meta Data UDFs

These scalar User-Defined Functions return information about the database and database objects.

To download Meta Data User-Defined Functions click this link: Download Meta Data UDFs

COL_LENGTH2

Returns the defined length (in bytes) of a column for a given table and for a given database.

Syntax
COL_LENGTH2 ( 'database' , 'table' , 'column' )
Arguments
'database' - Is the name of the database. database is an expression of type nvarchar.
'table' - Is the name of the table for which to determine column length information. table is an expression of type nvarchar.
'column' - Is the name of the column for which to determine length. column is an expression of type nvarchar.
Return Types
int

The function's text:

CREATE FUNCTION COL_LENGTH2
  ( @database sysname,
    @table sysname,
    @column sysname )
RETURNS int
AS
BEGIN
  RETURN (COL_LENGTH(@database + '..' + @table, @column))
END
GO

Examples

This example returns the defined length (in bytes) of the au_id column of the authors table in the pubs database:

SELECT dbo.COL_LENGTH2('pubs', 'authors', 'au_id')
GO

Here is the result set:

-----------
11

(1 row(s) affected)

COL_ID

Returns the ID of a database column given the corresponding table name and column name.

Syntax
COL_ID ( 'table' , 'column' )
Arguments
'table' - Is the name of the table. table is an expression of type nvarchar.
'column' - Is the name of the column. column is an expression of type nvarchar.
Return Types
int

The function's text:

CREATE FUNCTION COL_ID
  ( @table sysname,
    @column sysname )
RETURNS int
AS
BEGIN
  DECLARE @col_id int
  SELECT @col_id = colid FROM syscolumns
         WHERE id = OBJECT_ID(@table) AND name = @column
  RETURN @col_id
END
GO

Examples

This example returns the ID of the au_fname column of the authors table in the pubs database:

USE pubs
GO
SELECT dbo.COL_ID('authors', 'au_fname')
GO

Here is the result set:

-----------
3

(1 row(s) affected)

INDEX_ID

Returns the ID of an index given the corresponding table name and index name.

Syntax
INDEX_ID ( 'table' , 'index_name' )
Arguments
'table' - Is the name of the table. table is an expression of type nvarchar.
'index_name' - Is the name of the index. index_name is an expression of type nvarchar.
Return Types
int

The function's text:

CREATE FUNCTION INDEX_ID
  ( @table sysname,
    @index_name sysname )
RETURNS int
AS
BEGIN
  DECLARE @indid int
  SELECT @indid = indid FROM sysindexes
         WHERE id = OBJECT_ID(@table) AND name = @index_name
  RETURN @indid
END
GO

Examples

This example returns the ID of the aunmind index of the authors table in the pubs database:

USE pubs
GO
SELECT dbo.INDEX_ID('authors', 'aunmind')
GO

Here is the result set:

-----------
2

(1 row(s) affected)

INDEX_COL2

Returns the indexed column name for a given table and for a given database.

Syntax
INDEX_COL2 ( 'database' , 'table' , index_id , key_id )
Arguments
'database' - Is the name of the database. database is an expression of type nvarchar.
'table' - Is the name of the table.
index_id - Is the ID of the index.
key_id - Is the ID of the key.
Return Types
nvarchar (256)

The function's text:

CREATE FUNCTION INDEX_COL2
  ( @database sysname,
    @table sysname,
    @index_id int,
    @key_id int )
RETURNS nvarchar (256)
AS
BEGIN
  RETURN (INDEX_COL(@database + '..' + @table, @index_id, @key_id))
END
GO

Examples

This example returns the indexed column name of the authors table in the pubs database (for index_id = 2 and key_id = 1):

SELECT dbo.INDEX_COL2('pubs', 'authors', 2, 1)
GO

Here is the result set:

-----------------------
au_lname

(1 row(s) affected)

ROW_COUNT

Returns the total row count for a given table.

Syntax
ROW_COUNT ( 'table' )
Arguments
'table' - Is the name of the table for which to determine the total row count. table is an expression of type nvarchar.
Return Types
int

The function's text:

CREATE FUNCTION ROW_COUNT
  ( @table sysname )
RETURNS int
AS
BEGIN
  DECLARE @row_count int
  SELECT @row_count = rows FROM sysindexes
    WHERE id = OBJECT_ID(@table) AND indid < 2
  RETURN @row_count
END
GO

Examples

This example returns the total row count of the authors table in the pubs database:

USE pubs
GO
SELECT dbo.ROW_COUNT('authors')
GO

Here is the result set:

-----------
23

(1 row(s) affected)

See this link for more information: Alternative way to get the table's row count

By Alexander Chigrik, 2001/10/17

Total article views: 3965 | Views in the last 30 days: 8
Your response
 
 
Related tags
 
 
Contribute

Free registration required...

To read the rest of this article, and access thousands of other articles, we ask you to register on the site and subscribe to our newsletters.

Login (existing users)

Login

Email:   Password:   Remember me: Forgotten your password?

Register (new users)

Register

Email:   Password:
Confirm:

Subscribing to our newsletters gets you:

  • ALL of our content (thousands of articles, scripts, and forum postings)
  • A daily newsletter (example)
  • A weekly news round up (example)
  • The opportunity to ask and answer questions in our forums
  • A daily Question of the Day to test and help you increase your knowledge of SQL Server.

Steve Jones
Editor, SQLServerCentral.com