动态创建临时表
2009-04-15 10:36
218 查看
-------------------------------------
--create table
-------------------------------------
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[cellinf]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[cellinf]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[rowinf]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[rowinf]
GO
CREATE TABLE [dbo].[cellinf] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[cell] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[rowinf] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[row] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[cellinf] WITH NOCHECK ADD
CONSTRAINT [PK_cellinf] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[rowinf] WITH NOCHECK ADD
CONSTRAINT [PK_rowinf] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
GO
-----------------------------------------------------------------
--insert data
-----------------------------------------------------------------
insert into cellinf(cell) values ('姓名')
insert into cellinf(cell) values ('项一')
insert into cellinf(cell) values ('项二')
insert into cellinf(cell) values ('项三')
insert into rowinf(row) values ('1行')
insert into rowinf(row) values ('2行')
insert into rowinf(row) values ('3行')
insert into rowinf(row) values ('4行')
-----------------------------------------------------------------
--create procedure
-----------------------------------------------------------------
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[mytable]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[mytable]
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE mytable AS
DECLARE @create_sql varchar(8000)
SET @create_sql = ''
DECLARE pxReg_Cursor CURSOR
FOR SELECT cell FROM cellinf
DECLARE @itemname varchar(500)
OPEN pxReg_Cursor
FETCH NEXT FROM pxReg_Cursor INTO @itemname
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @create_sql = @create_sql + @itemname + ' varchar(500),'
FETCH NEXT FROM pxReg_Cursor INTO @itemname
END
CLOSE pxReg_Cursor
DEALLOCATE pxReg_Cursor
SELECT @create_sql=LEFT(@create_sql, LEN(@create_sql)-1)
SELECT @create_sql= 'CREATE TABLE #reg('+@create_sql+') '
DECLARE @insert_sql varchar(8000)
SET @insert_sql=' INSERT INTO #reg(姓名) SELECT row as 姓名 FROM rowinf '
DECLARE @sel_sql varchar(8000)
SET @sel_sql=' SELECT * FROM #reg drop table #reg '
--print @create_sql
EXEC (@create_sql + @insert_sql + @sel_sql)
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
EXEC mytable
相关文章推荐
- MS SQL动态创建临时表
- sqlserver 动态创建临时表的语句分享
- Oracle存储过程动态创建临时表/存储过程执行权限问题--AUTHID CURRENT_USER
- mysql动态创建临时表
- EXEC的两种用法以及用动态语句创建临时表的问题
- SQL 动态创建临时表
- sqlserver 动态创建临时表的语句分享
- EXEC的两种用法以及用动态语句创建临时表的问题
- 动态创建临时表,根据变量动态命名临时表表名
- 动态创建web路径,并存储临时上传文件
- Ubuntu下的进行动态链接库创建和使用的方法
- HTML5 web SQL动态创建数据库表(同步数据)
- 串形化与动态创建(Serilize & DynamicCreate)
- View 中动态创建自定义控件(参看图)
- java 创建文件-创建目录-创建临时文件
- javascript 动态创建表格
- 动态对话框的创建
- DOM 动态创建结点
- php 动态创建XML文件类
- asp.net 中利用ajax获取动态创建表中文本框的值