小弟对Mysql存储过程语法不太熟悉,以下存储过程在调整过后执行仍不成功,求各位大侠指点指点。。
create procedure prc_AddChannel
(
id int,
iname varchar(50),
isdisplay int,
descriptions varchar(100),
demo varchar(100)
)
begin
declare myRight int;
declare pro int;
SELECT Right_Value into myRight FROM CHANNEL WHERE CHANNEL_ID=id;
SELECT count(*) into pro FROM CHANNEL WHERE PARENT_ID=id;
UPdate CHANNEL SET HAS_CHILD = 1 WHERE CHANNEL_ID=id;
UPdate CHANNEL SET RIGHT_VALUE = RIGHT_VALUE+2 WHERE RIGHT_VALUE>=myRight;
UPdate CHANNEL SET LEFT_VALUE = LEFT_VALUE+2 WHERE LEFT_VALUE>myRight;
INSERT INTO CHANNEL(PARENT_ID,TITLE,CREATE_TIME,Left_Value,Right_Value,HAS_CHILD,PRORITY,Is_Display,Description,Demo) VALUES (id,iname,now(),myRight,myRight + 1,0,pro+1,isdisplay,descriptions,demo);
end;
create procedure prc_DelChannel(id int)
begin
declare myRight int ;
declare myLeft int ;
declare myWidth int ;
SELECT Right_Value into myRight FROM CHANNEL WHERE CHANNEL_ID = id;
SELECT LEFT_VALUE into myLeft FROM CHANNEL WHERE CHANNEL_ID = id;
SELECT Right_Value - LEFT_VALUE + 1 into myWidth FROM CHANNEL WHERE CHANNEL_ID = id;
DELETE FROM CHANNEL WHERE LEFT_VALUE BETWEEN myLeft AND myRight;
UPdate CHANNEL SET Right_Value = Right_Value - myWidth WHERE Right_Value > myRight;
UPdate CHANNEL SET LEFT_VALUE = LEFT_VALUE - myWidth WHERE LEFT_VALUE > myRight;
end;
作者: hp_1015
发布时间: -09-02