在存储过程中:
怎么把下面这转化为mysql;
declare @sql varchar(200)
SET @sql='INSERT INTO '+@tablename+' SELECT * From student'
EXEC(@sql)
怎么把下面这转化为mysql;
declare @sql varchar(200)
SET @sql='INSERT INTO '+@tablename+' SELECT * From student'
EXEC(@sql)
SET @sql=concat('INSERT INTO ',@tablename,' SELECT * From student');
prepare stmt1 from @sql;
execute @sql;
deallocate prepare stmt1;
SET @sql=concat('INSERT INTO ',@tablename,' SELECT * From student' )
PREPARE stmt1 FROM @sql;
EXECUTE stmt1 ;
prepare stmt1 from @sql;
execute stmt1;
deallocate prepare stmt1;
mssqlserver里面的字符串连接可以用“+”,则mysql里面改成对应的concat函数即可;
mssqlserver里面的动态语句,在mysql里面用如下形式执行:
prepare xxx from 用户变量;
execute xxx;
deallocate prepare xxx;
另外像3楼的那sql code 那框框怎么搞的。
begin
SET @sql=concat('INSERT INTO ',@tablename,' SELECT * From student');
prepare stmt1 from @sql;
execute stmt1;
deallocate prepare stmt1;
end
//
delimiter //
create procedure asdf(tablename varchar(200))
begin
declare sql varchar(200);
SET @sql=concat('INSERT INTO ',@tablename,' SELECT * From student');
prepare stmt1 from @sql;
execute stmt1;
deallocate prepare stmt1;
end //
mysql> create procedure asdf(tablename varchar(200))
-> begin
-> SET @sql=concat('INSERT INTO ',@tablename,' SELECT * From student');
-> prepare stmt1 from @sql;
-> execute stmt1;
-> deallocate prepare stmt1;
-> end //
Query OK, 0 rows affected (0.53 sec)mysql>
create procedure asdf(tablename varchar(200))
begin
-- declare sql varchar(200);
SET @sql=concat('INSERT INTO ',@tablename,' SELECT * From student');
prepare stmt1 from @sql;
execute stmt1;
deallocate prepare stmt1;
end //
把declare sql varchar(200);去掉就好了。
谢谢大家了。