1、查询完整组织名称
USE [populac]
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[f_getUnitName](@ VARCHAR(20))
RETURNS varchar(150)
AS
BEGIN
DECLARE @t TABLE(unitcode VARCHAR(30), upunitcode VARCHAR(30), [unitname] VARCHAR(80), [upunitname] VARCHAR(80),Level INT)
DECLARE @level INT
DECLARE @result varchar(150)
SET @level=1
INSERT INTO @t SELECT unitcode,upunitcode,unitname,upunitname,@level FROM unit WHERE unitcode=@
WHILE(@@ROWCOUNT>0)
BEGIN
SET @level=@level+1
INSERT INTO @t SELECT t.unitcode,t.upunitcode,t.unitname,t.upunitname,@level FROM unit AS t,@t AS a WHERE t.upunitcode<>'@' and a.upunitcode=t.unitcode AND a.level=@level-1
END
BEGIN
DELETE @t where unitcode=@
END
select @result = stuff((select '-'+[unitname] from @t order by unitcode for xml path('')), 1, 1, '')
RETURN @result
END
select dbo.f_getUnitName('100100020404'); //---党委/工会-党群办公室
#2 查询所有表结构
SELECT ( CASE WHEN a.colorder = 1 THEN d.name
ELSE ''
END ) AS 表名 ,
a.colorder AS 字段序号 ,
a.name AS 字段名 ,
( CASE WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 THEN '√'
ELSE ''
END ) AS 标识 ,
( CASE WHEN ( SELECT COUNT(*)
FROM sysobjects
WHERE ( name IN (
SELECT name
FROM sysindexes
WHERE ( id = a.id )
AND ( indid IN (
SELECT indid
FROM sysindexkeys
WHERE ( id = a.id )
AND ( colid IN (
SELECT
colid
FROM
syscolumns
WHERE
( id = a.id )
AND ( name = a.name ) ) ) ) ) ) )
AND ( xtype = 'PK' )
) > 0 THEN '√'
ELSE ''
END ) AS 主键 ,
b.name AS 类型 ,
a.length AS 占用字节数 ,
COLUMNPROPERTY(a.id, a.name, 'PRECISION') AS 长度 ,
ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0) AS 小数位数 ,
( CASE WHEN a.isnullable = 1 THEN '√'
ELSE ''
END ) AS 允许空 ,
ISNULL(e.text, '') AS 默认值 ,
ISNULL(g.[value], '') AS 字段说明
FROM syscolumns a
LEFT JOIN systypes b ON a.xtype = b.xusertype
INNER JOIN sysobjects d ON a.id = d.id
AND d.xtype = 'U'
AND d.name <> 'dtproperties'
LEFT JOIN syscomments e ON a.cdefault = e.id
LEFT JOIN sys.extended_properties g ON a.id = g.major_id
AND a.colid = g.minor_id
ORDER BY a.id ,
a.colorder;