这个是SQL中的存储过程。ALTER PROCEDURE [dbo].[LhStartInfo]
@channel int ,
@sdt varchar(25),
@xmmc varchar(60),
@Tm varchar(50),
@o_id bigint OUTPUTAS
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值。

解决方案 »

  1.   

    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()
      

  2.   

    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()
      

  3.   

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

  4.   

    MSYQLk 不支持表名,列表为变量。只能通过 prepare ,  execute 来执行字符串变量中的SQL语句。
      

  5.   

     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?而且自增型的吗?
      

  6.   

    1、 SET @asql=CONCAT('insert into StartLh(channel,sdt,xmmc,state,tm) VALUES (',channel,',',sdt,',',xmmc,',','未完成',',',tm, ')'
    );
      prepare stml from @asql;
      execute stml;
    2、是自增的、字段名自行修改
      

  7.   

    wwwwb:按你提供的:提示:   Unknown column '$channel" in 'field list'谢谢!
      

  8.   

    还有一个是:in channel这个是数字型号的,concat 时需要如何转换吗?
      

  9.   

    我是直接用你的语句修改的
     SET @asql=CONCAT('insert into StartLh(channel,sdt,xmmc,state,tm) VALUES (',@channel,',',@sdt,',',@xmmc,',','未完成',',',@tm, ')'
     );
       prepare stml from @asql;
       execute stml;
    不用转换
      

  10.   

    提示:   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;
      

  11.   

    1
    参数:IN `channel` int,IN `sdt` datetime,IN `edt` datetime,IN `xmmc` varchar(50),IN `state` varchar(50),IN `tm` varchar(50),OUT `id` intBEGIN
    INSERT INTO startlh(channel,sdt,edt,xmmc,state,tm) VALUES(channel,sdt,edt,xmmc,state,tm);
    SET id=LAST_INSERT_ID();
    END
    搞定。
    2
      concat搞定。