my Sql存储过程,表名是变量。

noall 2012-11-30 05:03:18

这个是SQL中的存储过程。

ALTER PROCEDURE [dbo].[LhStartInfo]
@channel int ,
@sdt varchar(25),
@xmmc varchar(60),
@Tm varchar(50),
@o_id bigint OUTPUT

AS
BEGIN
SET NOCOUNT ON;
BEGIN
INSERT INTO StartLh(channel,sdt,xmmc,state,tm) VALUES (@channel,@sdt,@xmmc,'未完成',@Tm)
SET @o_id = @@IDENTITY
END
END

在mysql中应该如何写呢?
1。表名如果是变量的应该什么写?那么增加记录的语句要怎么写?
2。返回新增加记录的ID值。

...全文
203 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
noall 2012-12-04
  • 打赏
  • 举报
回复
1 参数:IN `channel` int,IN `sdt` datetime,IN `edt` datetime,IN `xmmc` varchar(50),IN `state` varchar(50),IN `tm` varchar(50),OUT `id` int BEGIN INSERT INTO startlh(channel,sdt,edt,xmmc,state,tm) VALUES(channel,sdt,edt,xmmc,state,tm); SET id=LAST_INSERT_ID(); END 搞定。 2 concat搞定。
noall 2012-12-03
  • 打赏
  • 举报
回复
提示: Unknown column '$channel" in 'field list' startlh的结构是这样的 CREATE TABLE `startlh` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `channel` bigint(20) DEFAULT NULL, `sdt` datetime DEFAULT NULL, `edt` datetime DEFAULT NULL, `xmmc` varchar(50) DEFAULT NULL, `state` varchar(50) DEFAULT NULL, `tm` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
wwwwb 2012-12-03
  • 打赏
  • 举报
回复
我是直接用你的语句修改的 SET @asql=CONCAT('insert into StartLh(channel,sdt,xmmc,state,tm) VALUES (',@channel,',',@sdt,',',@xmmc,',','未完成',',',@tm, ')' ); prepare stml from @asql; execute stml; 不用转换
noall 2012-12-03
  • 打赏
  • 举报
回复
还有一个是: in channel这个是数字型号的,concat 时需要如何转换吗?
noall 2012-12-03
  • 打赏
  • 举报
回复
wwwwb: 按你提供的:提示: Unknown column '$channel" in 'field list' 谢谢!
wwwwb 2012-12-03
  • 打赏
  • 举报
回复
1、 SET @asql=CONCAT('insert into StartLh(channel,sdt,xmmc,state,tm) VALUES (',channel,',',sdt,',',xmmc,',','未完成',',',tm, ')' ); prepare stml from @asql; execute stml; 2、是自增的、字段名自行修改
wwwwb 2012-12-03
  • 打赏
  • 举报
回复
你的SP代码是什么,怎么调用的
noall 2012-12-02
  • 打赏
  • 举报
回复
set @!asql=concat('insert into StartLh(channel,sdt,xmmc,state,tm) VALUES (',channel,sdt,,xmmc,'未完成',tm, ')'); prepare stml from @asql; execute stml; 参数是:in channel int;in sdt varchar(25);in xmmc varchar(60);in tm varchar(50) 保存不了呀。是用Navicat里设置的。 1 是数字类型转换错误?还是。连接出错? 2 如果是返回新增的ID,那么一定字段的字段名是 ID?而且自增型的吗?
ACMAIN_CHM 2012-11-30
  • 打赏
  • 举报
回复
MSYQLk 不支持表名,列表为变量。 只能通过 prepare , execute 来执行字符串变量中的SQL语句。
rucypli 2012-11-30
  • 打赏
  • 举报
回复
在mysql中应该如何写呢? 1。表名如果是变量的应该什么写?那么增加记录的语句要怎么写? 2。返回新增加记录的ID值。 拼成动态sql
wwwwb 2012-11-30
  • 打赏
  • 举报
回复
1。表名如果是变量的应该什么写?那么增加记录的语句要怎么写? set @bm='tt'; set @asql=concat('select * from ',@bm); prepare stml from @asql; execute stml; set @bm='tt'; set @asql=concat('insert into ',@bm,'values (123)'); prepare stml from @asql; execute stml; 2。返回新增加记录的ID值。 假设ID为自增 set @aa=LAST_INSERT_ID()
wwwwb 2012-11-30
  • 打赏
  • 举报
回复
1。表名如果是变量的应该什么写?那么增加记录的语句要怎么写? set @bm='tt'; set @!asql=concat('select * from ',@bm); prepare stml from @asql; execute stml; set @bm='tt'; set @!asql=concat('insert into ',@bm,'values(123)'); prepare stml from @asql; execute stml; 2。返回新增加记录的ID值。 set @aa=LAST_INSERT_ID()

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧