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