1.
IF EXISTS (SELECT name FROM sysobjects
WHERE name = \'SP_test\' AND type = \'P\')
DROP PROCEDURE SP_test
GO
--存储过程:SP_test
--功 能:关联 表zhb和相关数据表
-- 动态构造zhb与数据表之间的关联
CREATE PROCEDURE sp_get_zhb_zb
--@ID nvarchar(10), --数据表id
@frdwdm nvarchar(100), --数据表frdwdm
@bbsj nvarchar(50), --数据表bbsj
@Table nvarchar(50) --数据表名
AS
DECLARE @SQL nvarchar(4000),@C_Name nvarchar(50)
set @SQL=\'SELECT *,(select case z.bh \'
--构造游标,从zhb表中提取出数据表的列数和列名,用于动态构造sql
DECLARE C_Cursor CURSOR FOR
SELECT bh
FROM zhb z
WHERE z.ssbh=@Table
OPEN C_Cursor
FETCH NEXT FROM C_Cursor
into @C_Name
WHILE @@FETCH_STATUS = 0
BEGIN
set @SQL = @SQL +\'when \' + @C_Name + \' then d.[\' + @C_Name + \'] \'
FETCH NEXT FROM C_Cursor
into @C_Name
END
--关闭游标
CLOSE C_Cursor
DEALLOCATE C_Cursor
set @SQL = @SQL +\'end from \'+ @Table+\' d where d.frdwdm=\'\'\'+@frdwdm+\'\'\'and d.bbsj=\'\'\'+ @bbsj + \'\'\' and d.bs=\'\'0\'\') value,
(select case z.bh \'
--构造游标,从zhb表中提取出数据表的列数和列名,用于动态构造sql
DECLARE C_Cursor CURSOR FOR
SELECT bh
FROM zhb z
WHERE z.ssbh=@Table
OPEN C_Cursor
FETCH NEXT FROM C_Cursor
into @C_Name
WHILE @@FETCH_STATUS = 0
BEGIN
set @SQL = @SQL +\'when \' + @C_Name + \' then d.[\' + @C_Name + \'] \'
FETCH NEXT FROM C_Cursor
into @C_Name
END
--关闭游标
CLOSE C_Cursor
DEALLOCATE C_Cursor
set @SQL = @SQL +\'end from \'+ @Table+\' d where d.frdwdm=\'\'\'+@frdwdm+\'\'\'and d.bbsj=\'\'\'+ @bbsj + \'\'\' and d.bs=\'\'1\'\') value1
FROM zhb z WHERE z.ssbh=\'\'\' + @Table + \'\'\'\'
--执行动态sql
execute sp_executesql @SQL
GO
2.
IF EXISTS (SELECT name FROM sysobjects
WHERE name = \'SP_Find\' AND type = \'P\')
DROP PROCEDURE SP_Find
GO
CREATE PROCEDURE SP_Find
AS
select * from (
select d0.*,\'1\' doubleflag from D02_C d0,D02_C d1
where d0.id<>d1.id and d0.frdwdm=d1.frdwdm and d0.bbsj=d1.bbsj and d0.bs=1
union
select d.*,\'0\' doubleflag from D02_C d
where d.id not in(select d0.id from D02_C d0,D02_C d1
where d0.id<>d1.id and d0.frdwdm=d1.frdwdm and d0.bbsj=d1.bbsj)) d2
order by d2.[id]
GO
3.
IF EXISTS (SELECT name FROM sysobjects
WHERE name = \'SP_test\' AND type = \'P\')
DROP PROCEDURE SP_test
GO
--存储过程:SP_test
--功 能:关联 表zhb和相关数据表
-- 动态构造zhb与数据表之间的关联
CREATE PROCEDURE SP_test
@ID nvarchar(10), --数据表id
@Table nvarchar(50) --数据表名
AS
DECLARE @SQL nvarchar(2000),@C_Name nvarchar(50)
set @SQL=\'SELECT *,(select case z.bh \'
--构造游标,从zhb表中提取出数据表的列数和列名,用于动态构造sql
DECLARE C_Cursor CURSOR FOR
SELECT bh
FROM zhb z
WHERE z.ssbh=@Table
OPEN C_Cursor
FETCH NEXT FROM C_Cursor
into @C_Name
WHILE @@FETCH_STATUS = 0
BEGIN
set @SQL = @SQL +\'when \' + @C_Name + \' then d.[\' + @C_Name + \'] \'
FETCH NEXT FROM C_Cursor
into @C_Name
END
--关闭游标
CLOSE C_Cursor
DEALLOCATE C_Cursor
set @SQL = @SQL +\'end from \'+ @Table+\' d where d.id= \'+@ID+\' ) value FROM zhb z WHERE z.ssbh=\'\'\' + @Table + \'\'\'\'
--执行动态sql
execute sp_executesql @SQL
GO