mysql 存储过程 数据库表名字段作为参数传递给存储过程的方法 10

 我来答
frogley
推荐于2017-12-15 · TA获得超过1854个赞
知道小有建树答主
回答量:1008
采纳率:50%
帮助的人:1082万
展开全部
直接将数据库表名字段作为字符类型传到存储过程中,存储过程拼接sql语句,再用exec执行。例如:
CREATE PROCEDURE [proc_test]
(@tablename varchar(100))
WITH
EXECUTE AS CALLER
AS
declare @sql varchar(1000);
set @sql='select * from '+@tablename
exec(@sql)
GO

再直接执行 exec proc_test '学生表'
更多追问追答
追问
set l_sql=CONCAT_WS(' ','select min(id) from',in_table); 字符串拼接完 我执行这条语句 报Unknown column 'data' in 'field list'     但我是有这个表的
追答
你的表名叫field list?
郭某人来此
2015-09-30 · TA获得超过1646个赞
知道答主
回答量:952
采纳率:100%
帮助的人:90.2万
展开全部
直接将数据库表名字段作为字符类型传到存储过程中,存储过程拼接sql语句,再用exec执行。例如:
CREATE PROCEDURE [proc_test]
(@tablename varchar(100))
WITH
EXECUTE AS CALLER
AS
declare @sql varchar(1000);
set @sql='select * from '+@tablename
exec(@sql)
GO

再直接执行 exec proc_test '学生表'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
峰高耸石峰7803
2012-03-21
知道答主
回答量:17
采纳率:0%
帮助的人:10.6万
展开全部
表名字段为name的话
用POST的话就是这样取$_POST['name']
用GET同理一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小心烟花
2020-06-28
知道答主
回答量:10
采纳率:0%
帮助的人:7554
展开全部
BEGIN
SET @sqlStr:=CONCAT("select * from ",c);
PREPARE stmt from @sqlStr;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
c是你传进来的值的变量IN `c` varchar(100)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式