使用myStoredProc调用 存储过程时,出错
提示如下:
Select Cast(@`oid` as signed ) as @`od` at aline 1
存储过程,具体如下:
DELIMITER ;
-- ----------------------------
-- Procedure structure for `LhStartInfo`
-- ----------------------------
DROP PROCEDURE IF EXISTS `LhStartInfo`;
DELIMITER ;;
CREATE DEFINER=`root`@`%` PROCEDURE `LhStartInfo`(IN `achannel` int,IN `asdt` datetime,IN `aedt` datetime,IN `axmmc` varchar(50),IN `astate` varchar(50),IN `atm` varchar(50),OUT `oid` int)
BEGIN
INSERT INTO startlh(channel,sdt,edt,xmmc,state,tm) VALUES(achannel,asdt,aedt,axmmc,astate,atm);
SET oid=LAST_INSERT_ID();
END
;;
DELIMITER ;
表结构:
-- Table structure for `startlh`
-- ----------------------------
DROP TABLE IF EXISTS `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;
调用代码:
with aStor do
begin
close;
// s:=dateTimetoStr(self.dt);
Params.ParamByName('`asdt`').AsDateTime:=Now;
Params.ParamByName('`aedt`').asDateTime:=Now;// .as.as:=s;
Params.ParamByName('`achannel`').AsInteger:=2;
Params.ParamByName('`axmmc`').AsString:='ab';//self.xmmc;
Params.ParamByName('`atm`').AsString:='asdfasdfasd';
Params.ParamByName('`astate`').AsString:='ok'; //12707
Params.ParamByName('`oid`').AsInteger :=0;
Prepared:=true; //执行到这里时出错了。
ExecProc;
SpinEdit1.Value :=Params.ParamByName('`oid`').AsInteger;
end;
提示如下:
Select Cast(@`oid` as signed ) as @`od` at aline 1
存储过程,具体如下:
DELIMITER ;
-- ----------------------------
-- Procedure structure for `LhStartInfo`
-- ----------------------------
DROP PROCEDURE IF EXISTS `LhStartInfo`;
DELIMITER ;;
CREATE DEFINER=`root`@`%` PROCEDURE `LhStartInfo`(IN `achannel` int,IN `asdt` datetime,IN `aedt` datetime,IN `axmmc` varchar(50),IN `astate` varchar(50),IN `atm` varchar(50),OUT `oid` int)
BEGIN
INSERT INTO startlh(channel,sdt,edt,xmmc,state,tm) VALUES(achannel,asdt,aedt,axmmc,astate,atm);
SET oid=LAST_INSERT_ID();
END
;;
DELIMITER ;
表结构:
-- Table structure for `startlh`
-- ----------------------------
DROP TABLE IF EXISTS `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;
调用代码:
with aStor do
begin
close;
// s:=dateTimetoStr(self.dt);
Params.ParamByName('`asdt`').AsDateTime:=Now;
Params.ParamByName('`aedt`').asDateTime:=Now;// .as.as:=s;
Params.ParamByName('`achannel`').AsInteger:=2;
Params.ParamByName('`axmmc`').AsString:='ab';//self.xmmc;
Params.ParamByName('`atm`').AsString:='asdfasdfasd';
Params.ParamByName('`astate`').AsString:='ok'; //12707
Params.ParamByName('`oid`').AsInteger :=0;
Prepared:=true; //执行到这里时出错了。
ExecProc;
SpinEdit1.Value :=Params.ParamByName('`oid`').AsInteger;
end;
INSERT INTO startlh(channel,sdt,edt,xmmc,state,tm) VALUES(achannel,asdt,aedt,axmmc,astate,atm);
用adoquery也可以调用
如:
adoquery1.close ;
adoquery1.sql:= '{call procedurename (vlaues)}';
adoquery1.open ;