mysql 字段名做参数

begindeclarev_columnint;set@sql=concat("select",p_columnName,"intov_columnfromseat_in... begin
declare v_column int;

set @sql=concat("select ",p_columnName," into v_column from seat_info");
prepare stmt1 from @sql;
execute stmt1;
deallocate prepare stmt1;
end
运行时提示v_column变量没定义,这是怎么回事啊
展开
 我来答
tattackor
推荐于2016-02-22 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:891万
展开全部
1、存储子程序不能包含SQL预处理语句(PREPARE、EXECUTE、DEALLOCATE PREPARE)。隐含意义:不能在存储子程序中使用动态SQL语句(其中,能够以字符串形式构造动态语句,然后执行它们)。从MySQL 5.0.13开始,对于存储程序放宽了该限制,但该限制仍适用于存储函数和触发程序。

2、mssql下的存储过程写法:
create proc proc_ @col varchar(30)
as
begin
declare @sql varchar(100)
set @sql='select ' + @col +' from table_name'
exec(@sql)
end
exec proc_ 'col_name'
Coo_boi
2013-01-01 · TA获得超过1333个赞
知道大有可为答主
回答量:2209
采纳率:50%
帮助的人:245万
展开全部
存储过程?没用过mysql

mssql下的存储过程写法:

create proc proc_ @col varchar(30)
as
begin
declare @sql varchar(100)
set @sql='select ' + @col +' from table_name'
exec(@sql)
end

exec proc_ 'col_name'

好像后面加上分号就是mysql了吧?哈哈 。。。不知道
更多追问追答
追问
我是想把@col中的数据into给一个变量,这样该怎么改呢?为什么我那样写就提示变量没定义
追答
mysql里面定义变量 好像不用加@
另外这句感觉不对,p_columnname哪来的
set @sql=concat("select ",p_columnName," into v_column from seat_info")

还有,你不是用select into嘛 into后面应该跟的是表名吧
来自:求助得到的回答
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lmonkey
2021-04-21 · 教育领域创作者
个人认证用户
lmonkey
采纳数:69 获赞数:176

向TA提问 私信TA
展开全部

MySQL教程4 MySQL8运算符、函数、存储过程及新增数据类型 17.之创建带有IN和OUT参数的存储过程 学习猿地

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大小2便
2013-01-01 · TA获得超过160个赞
知道小有建树答主
回答量:158
采纳率:0%
帮助的人:111万
展开全部
把第二行改成
declare @ v_column int;
追问
这样改过后提示有语法错误啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式