June 13, 2012

sp_tables_ex (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_tables_ex(nvarchar @table_server
, nvarchar @table_name
, nvarchar @table_schema
, nvarchar @table_catalog
, nvarchar @table_type
, bit @fUsePattern)

MetaData:

   
create procedure sys.sp_tables_ex
(
@table_server sysname,
@table_name sysname = null,
@table_schema sysname = null,
@table_catalog sysname = null,
@table_type sysname = null,
@fUsePattern bit = 1 -- To allow users to explicitly disable all pattern matching.
)
as
if (@fUsePattern = 1) -- Does the user want it?
begin
if ((isnull(charindex('%', @table_name),0) = 0) and
(isnull(charindex('[', @table_name),0) = 0) and
(isnull(charindex('_', @table_name),0) = 0) and
(isnull(charindex('%', @table_schema),0) = 0) and
(isnull(charindex('[', @table_schema),0) = 0) and
(isnull(charindex('_', @table_schema),0) = 0) and
(isnull(charindex('%', @table_catalog),0) = 0) and
(isnull(charindex('[', @table_catalog),0) = 0) and
(isnull(charindex('_', @table_catalog),0) = 0))
begin
select @fUsePattern = 0 -- not a single wild char, so go the fast way.
end
end

if @fUsePattern = 0
begin
-- -- Debug output, do not remove it.
print '-- -- -- -- -- -- *'
print 'No pattern matching.'
print @fUsePattern
print isnull(@table_server, '@table_server = null')
print isnull(@table_name, '@table_name = null')
print isnull(@table_schema, '@table_schema = null')
print isnull(@table_catalog, '@table_catalog = null')
print isnull(@table_type, '@table_type = null')
print '-- -- -- -- -- -- *'
--
select
TABLE_CAT = rt.TABLE_CATALOG,
TABLE_SCHEM = rt.TABLE_SCHEMA,
TABLE_NAME = rt.TABLE_NAME,
TABLE_TYPE = rt.TABLE_TYPE,
REMARKS = convert(nvarchar(255),rt.DESCRIPTION)
from
-- We can not pass @table_type directly here, because in ODBC we enclose
-- it in '', which is not acceptable for OLEDB SProc.
sys.fn_remote_tables(@table_server,
@table_catalog,
@table_schema,
@table_name,
NULL) rt
where
(charindex ('' + TABLE_TYPE + '', @table_type) <> 0 or @table_type is NULL)
order by 4, 1, 2, 3
end
else
begin
-- -- Debug output, do not remove it.
print '-- -- -- -- -- -- *'
print 'THERE IS pattern matching!'
print @fUsePattern
print isnull(@table_server, '@table_server = null')
print isnull(@table_name, '@table_name = null')
print isnull(@table_schema, '@table_schema = null')
print isnull(@table_catalog, '@table_catalog = null')
print isnull(@table_type, '@table_type = null')
print '-- -- -- -- -- -- *'
--
select
TABLE_CAT = TABLE_CATALOG,
TABLE_SCHEM = TABLE_SCHEMA,
TABLE_NAME = TABLE_NAME,
TABLE_TYPE = TABLE_TYPE,
REMARKS = convert(nvarchar(255),DESCRIPTION)
from
sys.fn_remote_tables(@table_server,
@table_catalog,
NULL,
NULL,
NULL)
where
(TABLE_SCHEMA like @table_schema or
@table_schema is NULL or
(TABLE_SCHEMA is NULL and @table_schema = N'%')) and
(TABLE_CATALOG like @table_catalog or
@table_catalog is NULL or
(TABLE_CATALOG is NULL and @table_catalog = N'%')) and
(charindex ('' + TABLE_TYPE + '', @table_type) <> 0 or @table_type is NULL) and
(TABLE_NAME like @table_name or
@table_name is NULL)
order by 4, 1, 2, 3
end

No comments:

Post a Comment

Total Pageviews