DELIMITER $$ drop procedure if exists touch_; CREATE PROCEDURE `touch_`(IN a varchar(20),IN b varchar(20),IN c varchar(20)) BEGIN SET a ="3"; SET b ="2"; SET v ="1"; set @v_flag = concat("select * from t where id!=",a," and id!=",b," and id!=",c); prepare ee from @v_flag; EXECUTE ee ; DEALLOCATE PREPARE ee; END$$ 存储过程只能在begin 和end 之间设置变量值 声明部分目前我还不知道
因为之前用的都是sqlserver,mysql是初次使用,所以对mysql存储过程不了解,
create PROCEDURE library ( DB_Option_Action_ varchar(20))begin declare ReturnValue int set ReturnValue=-1 if(DB_Option_Action_='Insert') begin 能不能这样判断 if(DB_Option_Action_='Insert')
DELIMITER $$ drop procedure if exists touch_; CREATE PROCEDURE `touch_`(IN a varchar(20),IN b varchar(20),IN c varchar(20)) BEGIN if a="Integer" then SET a ="3"; end if; SET b ="2"; SET c ="1"; set @v_flag = concat("select * from t where id!=",a," and id!=",b," and id!=",c); prepare ee from @v_flag; EXECUTE ee ; DEALLOCATE PREPARE ee; END$$
drop procedure if exists touch_;
CREATE PROCEDURE `touch_`(IN a varchar(20),IN b varchar(20),IN c varchar(20)) BEGIN
SET a ="3";
SET b ="2";
SET v ="1"; set @v_flag = concat("select * from t where id!=",a," and id!=",b," and id!=",c);
prepare ee from @v_flag;
EXECUTE ee ;
DEALLOCATE PREPARE ee;
END$$
存储过程只能在begin 和end 之间设置变量值
声明部分目前我还不知道
(
DB_Option_Action_ varchar(20))begin declare ReturnValue int
set ReturnValue=-1
if(DB_Option_Action_='Insert')
begin
能不能这样判断 if(DB_Option_Action_='Insert')
drop procedure if exists touch_;
CREATE PROCEDURE `touch_`(IN a varchar(20),IN b varchar(20),IN c varchar(20))
BEGIN
if a="Integer" then
SET a ="3";
end if;
SET b ="2";
SET c ="1";
set @v_flag = concat("select * from t where id!=",a," and id!=",b," and id!=",c);
prepare ee from @v_flag;
EXECUTE ee ;
DEALLOCATE PREPARE ee;
END$$
其实,你可以存储进来null值,然后在存储过程的主体部分首先对输入参数的值检查并根据情况赋值,这样,你达到了默认值的效果了