相关文章推荐
犯傻的水桶  ·  CorrelationIdConverter ...·  3 月前    · 
从容的蚂蚁  ·  VBA ...·  1 年前    · 
聪明的风衣  ·  linux ...·  1 年前    · 
sql server不支持动态命名局部临时表的表名,如以下语句并不能创建局部临时表:
declare @n nvarchar(10),@s nvarchar(100)
set @n = 'temp'
set @s = N'select * into #'+@n+' from mytable'
--print @s
exec sp_executesql @s
以上语句并不提示错误,但查询#temp表时,提示#temp对象名无效。
如果需要动态创建表名,只能用以下两种方法:
1、创建全局临时表(用两个#)。
declare @n nvarchar(10),@s nvarchar(100)
set @n = 'temp'
set @s = N'select * into ##'+@n+' from mytable'
--print @s
exec sp_executesql @s
2、创建真正的表(去掉#),一定要小心的创建,小心的删除。
declare @n nvarchar(10),@s nvarchar(100)
set @n = 'temp'
set @s = N'select * into '+@n+' from mytable'
--print @s
exec sp_executesql @s
这种方法创建的表,存放在当前的数据库里,而不是像临时表一样存放在tempdb数据库里。  执行下面的语句的时候,虽然不提示错误,但是在查询 临时表 的时候,却查无内容。 decare @n nvarchar(10),@s nvarchar(100) set @n = ‘ 临时表 名’ set @s = N’select * into’+@n+‘from 数据源表’ –print @s exec sp_execute sql @s 动态 创建全局 临时表 DECLARE @n nvarchar(10),@s nvarchar(100) SET @n = ‘ 临时表 名’ SET @s = N’SELECT 点击关注公众号, SQL 干货及时获取后台回复:1024,获取海量学习资源 SQL 刷题专栏 SQL 145题系列 临时表 定义 临时表 与实体表类似,只是在使用过程中, 临时表 是存储在系统 数据库 tempdb中。当我们不再使用 临时表 的时候, 临时表 会自动删除。 临时表 分类 临时表 分为本地 临时表 和全局 临时表 ,它们在名称、可见性以及可用性上有区别。 临时表 的特性对于 临时表 有如下几个特点:本地 临时表 就是用户在创建表的时候添加了"#"... --创建测试表 IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TestRows2Columns]') AND type in (N'U')) DROP TABLE [dbo].[TestRows2Columns] CREATE TABLE [dbo].[TestRows2Columns]( [Id] [int] IDENTITY(1,1) NOT NULL, 在编写 sql 语句或存储过程中,难免会有碰到语句中 表名 或某一字段名不确定,要根据条件来,这时,我们可考虑用 SQL 提供的sp_execute sql 函数,,他可执行 动态 的修改,删除,查询功能,至于此函数的详细解释可到 sql 帮助文档中去查看... 在编写 sql 语句或存储过程中,难免会有碰到语句中 表名 或某一字段名不确定,要根据条件来,考试,大提示我们可考虑用 SQL 提供的sp_execute sql 函数,,他可执行 动态 的修改,删除,查询功能,至于此函数的详细解释可到 sql 帮助文档中去查看,下面我将举一个 动态 查询的列子,包括 表名 及想查询的字段均不确定:   (ID int) (A numeric(9,2)) (B numeri 最近很多同学问到达梦 数据库 中如何在存储过程中创建 临时表 ,这里给大家介绍一下: 达梦中 临时表 和oracle一样是全局的,需要先创建后使用,并且用完表结构不会被删除,可以反复使用 SQL SERVER 临时表 用完表结果是自动删除的,这点有根本性的区别 达梦 临时表 有两种类型:会话级的 临时表 和事务级的 临时表 。 1)ON COMMIT DELETE ROWS --事务级 临时表 它是 临时表 的默认参数,表示 临时表 中的数据仅在事务过程(Transaction)中有效,当事务提交(COMMIT)后, 临时表 的暂时段. my sql 在存储过程中是不支持直接使用 变量 名作为 表名 或者是列名的,而在实际的应用中确实会用到变 表名 或者 变量 名的情况,如数据量很大的时候就会用到分表。通过在网上查了my sql 5.1以上的版本提供了prepare语句用于支持这种操作。参考http://jonllen.iteye.com/blog/370343上面的例子,完成了变 表名 并且查询结果赋值给 变量 的存储过程。实例代码如下: delimite 1 :普通 SQL 语句可以用exec执行 Select * from tableName exec('select * from tableName') exec sp_execute sql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名, 表名 数据库 名之类作为 变量 时,必须用 动态 SQL declare @fname v... use E_Graphics_Card if exists(select * from sys.objects where name='usp_Insert_Update_Bios_Info_Args') drop proc usp_Insert_Update_Bios_Info_Args CREATE PROC usp_Insert_Update_Bios_Info_Args