在sql存储过程声明变量中可以为表名设置变量吗

☉&&( 18:36:57)☉&&( 13:2:31)☉&&( 17:17:55)
AdSense专题
Powered By
Designed by Han'spaceMYSQL存储过程中表名使用变量_MySQL_ThinkSAAS
MYSQL存储过程中表名使用变量
MYSQL存储过程中表名使用变量
内容来源: 网络
MYSQL存储过程中表名使用变量
该存储过程定义了几个传入参数,前缀都是para_
该存储过程的此部分功能是,查询根据传入参数动态生成的tbl_name表名的表中
tbl_name = CONCAT("result_", para_user);
SET @STMT := CONCAT("SELECT COUNT(*) INTO @num_count FROM ", tbl_name
," WHERE rng = &", para_rng
,"& AND north_latitude = ", para_north
," AND bck_datetime = &", para_datetime
,"& AND east_longitude = ", para_east, ";");
PREPARE STMT FROM @STMT;
EXECUTE STMT;
注:目前 存储过程 支持动态SQL,函数不支持。
PHP开发框架
开发工具/编程工具
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
让ThinkSAAS更好,把建议拿来。
开发客服微信查看:5965|回复:4
各位高手,我有一个问题一直无法解决,请高手们指点,非常感谢!
我的问题是“存储过程中如何将一些变量值Insert到一个表名也是变量的表中”,如下该如何写:
CREATE& &procedure& &InsertDataRecord&&--将数据存入历史数据表中
varchar(20),
smallmoney,
@stdate varchar(10),
varchar(8)
--保存数据
declare @table varchar(8);& & --用于存放表名
set @table= 'dt'+rtrim(cast(datepart(yyyy,getdate()) as char(4))+cast(datepart(MM,getdate()) as char(2))) --设定表名为dt加当月日期如:当月是20089,则为dt20089
--我需要将以上四个变量的值插入到@table表中,应该如何写呢?请高手指点,非常感谢!
insert ..........&&
中级工程师
方法一:拼SQL,因为在SQL语句中表名是不能用变量的。所以,只能拼出SQL 然后EXECUTE。
方法二:如果表结构一定的话用表变量也可以。
能说说表变量吗?
中级工程师
这是google到的一篇文章,希望对您有所帮助复制内容到剪贴板代码:SQL Server表变量的使用方法
作者:佚名 来源:中国自学编程网收集整理 发布日期:
表变量的使用:
DECLARE @T_ChartsIdeaItem1 Table(XData char(20) null,YData char(20) null)
INSERT INTO @T_ChartsIdeaItem1
(XData,YData)
VALUES ('BU9876', 'Creating')
select * from @T_ChartsIdeaItem1
查询列转行显示:
varchar(8000),
varchar(8000),
@sql3 varchar(8000)
set @sql1=\'select '
Set @sql2=\'select '
set @sql3=\'select '
select @sql1=@sql1+ '''' +convert(varchar(50), 字段1)+ ''' as ['+ convert(varchar(50), 字段1) +'],',
@sql2=@sql2+ '''' +convert(varchar(50),×字段2)+''' as['+ convert(varchar(50), 字段1) +'],',
@sql3=@sql3+ '''' +convert(varchar(50), 字段3)+''' as ['+ convert(varchar(50), 字段1) +'],'
from table
set @sql1=left(@sql1,len(@sql1)-1)
set @sql2=left(@sql2,len(@sql2)-1)
set @sql3=left(@sql3,len(@sql3)-1)
exec( + ' union ' +
+ ' union ' + @sql3)
Convert(varchar(10),getdate(),120)
这样的方法来实现,其中varchar(10)定义的是你要的字段的长度,当然长度的不同返回的也会不的,如果我们只要日期部分,设成10正好为日期长度,如果设成19则正好可以读到时间部分。
现在介绍最后面代的参数,分别以代的参数及实例效果说明
05/08/2006
08/05/2006
08.05.2006
08-05-2006
08 05 2006
05 08, 2006
05-08-2006
21:33:06:503
另类子查询:
(select top 1 grades from T_Assessment where panyid order by AssessmentID desc) as pgrades,
(select (sum(Score) + 60) from T_Honesty where AuditDate&=(select top 1 AssessmentDate from T_Assessment where panyid order by AssessmentID desc) and AuditDate&=getdate() and panyid and Status=2) as Score
from t_company c inner join T_USER u on c.User_ID = u.User_ID where u.UserType=0
:lol :lol :lol :lol09-1009-1009-1009-10
02-0710-1701-1303-30
◇本站云标签MYSQL存储过程中表名使用变量
MYSQL存储过程中表名使用变量
# & & &该存储过程定义了几个传入参数,前缀都是para_
# & & &该存储过程的此部分功能是,查询根据传入参数动态生成的tbl_name表名的表中
tbl_name = CONCAT(&result_&, para_user);
SET @STMT := CONCAT(&SELECT COUNT(*) INTO @num_count FROM &, tbl_name
,& WHERE rng = '&, para_rng
,&' AND north_latitude = &, para_north
,& AND bck_datetime = '&, para_datetime
,&' AND east_longitude = &, para_east, &;&);
PREPARE STMT FROM @STMT;
EXECUTE STMT;
注:目前 存储过程 支持动态SQL,函数不支持。

我要回帖

更多关于 存储过程 表名变量 的文章

 

随机推荐