DROP PROCEDURE IF EXISTS PUT_HOUSEID_IN_SYSTEM;
CREATE PROCEDURE PUT_HOUSEID_IN_SYSTEM()
BEGIN
DECLARE V_CITY_NAME,V_DISTRICT_NAME,V_HOUSE_NAME VARCHAR(100);
DECLARE V_CITY_ID,V_DISTRICT_ID INTEGER;
DECLARE V_HOUSE_ID DECIMAL(60,0);
DECLARE FOUND BOOLEAN DEFAULT TRUE;
DECLARE C_HOUSE CURSOR FOR
SELECT house_id,house_name,city_name,district_name FROM fdd_house_version.fdd_house_version;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET FOUND = FALSE;
OPEN C_HOUSE;
FETCH C_HOUSE INTO V_HOUSE_ID,V_HOUSE_NAME,V_CITY_NAME,V_DISTRICT_NAME;
WHILE FOUND DO
SELECT V_CITY_ID= CITY_ID FROM fdd_basic.t_region_sites WHERE CITY_NAME = V_CITY_NAME;
SELECT V_DISTRICT_ID= CITY_ID FROM fdd_basic.t_region_sites WHERE CITY_NAME = V_DISTRICT_NAME AND CITY_PID = V_CITY_ID;
UPDATE fdd_loupan.fdd_house SET version_house_id = V_HOUSE_ID WHERE
city_id=V_CITY_ID
AND district_id = V_DISTRICT_ID
AND house_name = V_HOUSE_NAME;
FETCH C_HOUSE INTO V_HOUSE_ID,V_HOUSE_NAME,V_CITY_NAME,V_DISTRICT_NAME;
END WHILE;
CLOSE C_HOUSE;
END
这样就不可以,但是:
DROP PROCEDURE IF EXISTS PUT_HOUSEID_IN_SYSTEM;
CREATE PROCEDURE PUT_HOUSEID_IN_SYSTEM()
BEGIN
DECLARE V_CITY_NAME,V_DISTRICT_NAME,V_HOUSE_NAME VARCHAR(100);
DECLARE V_CITY_ID,V_DISTRICT_ID INTEGER;
DECLARE V_HOUSE_ID DECIMAL(60,0);
DECLARE FOUND BOOLEAN DEFAULT TRUE;
DECLARE C_HOUSE CURSOR FOR
SELECT house_id,house_name,city_name,district_name FROM fdd_house_version.fdd_house_version;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET FOUND = FALSE;
OPEN C_HOUSE;
FETCH C_HOUSE INTO V_HOUSE_ID,V_HOUSE_NAME,V_CITY_NAME,V_DISTRICT_NAME;
WHILE FOUND DO
#SELECT V_CITY_ID= CITY_ID FROM fdd_basic.t_region_sites WHERE CITY_NAME = V_CITY_NAME;
#SELECT V_DISTRICT_ID= CITY_ID FROM fdd_basic.t_region_sites WHERE CITY_NAME = V_DISTRICT_NAME AND CITY_PID = V_CITY_ID;
UPDATE fdd_loupan.fdd_house SET version_house_id = V_HOUSE_ID WHERE
city_id=(SELECT CITY_ID FROM fdd_basic.t_region_sites WHERE CITY_NAME = V_CITY_NAME AND city_pid = 0)
AND district_id = (SELECT CITY_ID FROM fdd_basic.t_region_sites WHERE CITY_NAME = V_DISTRICT_NAME AND CITY_PID = (SELECT CITY_ID FROM fdd_basic.t_region_sites WHERE CITY_NAME = V_CITY_NAME AND city_pid = 0))
AND house_name = V_HOUSE_NAME;
FETCH C_HOUSE INTO V_HOUSE_ID,V_HOUSE_NAME,V_CITY_NAME,V_DISTRICT_NAME;
END WHILE;
CLOSE C_HOUSE;
END
就可以,为什么?
CREATE PROCEDURE PUT_HOUSEID_IN_SYSTEM()
BEGIN
DECLARE V_CITY_NAME,V_DISTRICT_NAME,V_HOUSE_NAME VARCHAR(100);
DECLARE V_CITY_ID,V_DISTRICT_ID INTEGER;
DECLARE V_HOUSE_ID DECIMAL(60,0);
DECLARE FOUND BOOLEAN DEFAULT TRUE;
DECLARE C_HOUSE CURSOR FOR
SELECT house_id,house_name,city_name,district_name FROM fdd_house_version.fdd_house_version;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET FOUND = FALSE;
OPEN C_HOUSE;
FETCH C_HOUSE INTO V_HOUSE_ID,V_HOUSE_NAME,V_CITY_NAME,V_DISTRICT_NAME;
WHILE FOUND DO
SELECT V_CITY_ID= CITY_ID FROM fdd_basic.t_region_sites WHERE CITY_NAME = V_CITY_NAME;
SELECT V_DISTRICT_ID= CITY_ID FROM fdd_basic.t_region_sites WHERE CITY_NAME = V_DISTRICT_NAME AND CITY_PID = V_CITY_ID;
UPDATE fdd_loupan.fdd_house SET version_house_id = V_HOUSE_ID WHERE
city_id=V_CITY_ID
AND district_id = V_DISTRICT_ID
AND house_name = V_HOUSE_NAME;
FETCH C_HOUSE INTO V_HOUSE_ID,V_HOUSE_NAME,V_CITY_NAME,V_DISTRICT_NAME;
END WHILE;
CLOSE C_HOUSE;
END
这样就不可以,但是:
DROP PROCEDURE IF EXISTS PUT_HOUSEID_IN_SYSTEM;
CREATE PROCEDURE PUT_HOUSEID_IN_SYSTEM()
BEGIN
DECLARE V_CITY_NAME,V_DISTRICT_NAME,V_HOUSE_NAME VARCHAR(100);
DECLARE V_CITY_ID,V_DISTRICT_ID INTEGER;
DECLARE V_HOUSE_ID DECIMAL(60,0);
DECLARE FOUND BOOLEAN DEFAULT TRUE;
DECLARE C_HOUSE CURSOR FOR
SELECT house_id,house_name,city_name,district_name FROM fdd_house_version.fdd_house_version;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET FOUND = FALSE;
OPEN C_HOUSE;
FETCH C_HOUSE INTO V_HOUSE_ID,V_HOUSE_NAME,V_CITY_NAME,V_DISTRICT_NAME;
WHILE FOUND DO
#SELECT V_CITY_ID= CITY_ID FROM fdd_basic.t_region_sites WHERE CITY_NAME = V_CITY_NAME;
#SELECT V_DISTRICT_ID= CITY_ID FROM fdd_basic.t_region_sites WHERE CITY_NAME = V_DISTRICT_NAME AND CITY_PID = V_CITY_ID;
UPDATE fdd_loupan.fdd_house SET version_house_id = V_HOUSE_ID WHERE
city_id=(SELECT CITY_ID FROM fdd_basic.t_region_sites WHERE CITY_NAME = V_CITY_NAME AND city_pid = 0)
AND district_id = (SELECT CITY_ID FROM fdd_basic.t_region_sites WHERE CITY_NAME = V_DISTRICT_NAME AND CITY_PID = (SELECT CITY_ID FROM fdd_basic.t_region_sites WHERE CITY_NAME = V_CITY_NAME AND city_pid = 0))
AND house_name = V_HOUSE_NAME;
FETCH C_HOUSE INTO V_HOUSE_ID,V_HOUSE_NAME,V_CITY_NAME,V_DISTRICT_NAME;
END WHILE;
CLOSE C_HOUSE;
END
就可以,为什么?
--匿名PL/SQL块
DECLARE
v_sal emp.sal%type;
BEGIN
SELECT sal INTO v_sal FROM emp WHERE empno=7839;
...
END;
/
select @var:=id from table where name='abcdd'
建议有问题时不妨看一下手册。