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变量没定义,这是怎么回事啊 展开
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变量没定义,这是怎么回事啊 展开
4个回答
展开全部
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'
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'
展开全部
存储过程?没用过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了吧?哈哈 。。。不知道
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后面应该跟的是表名吧
来自:求助得到的回答
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
MySQL教程4 MySQL8运算符、函数、存储过程及新增数据类型 17.之创建带有IN和OUT参数的存储过程 学习猿地
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把第二行改成
declare @ v_column int;
declare @ v_column int;
追问
这样改过后提示有语法错误啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询