country_demograhics
问题是要我创建一个名为country_name
的过程。将CONTRY_NAME
作为IN参数传递。显示LOCATION
,CAPITOL
,POPULATION
,AIRPORTS
,CLIMATE
,Error at line 0: PL/SQL: Compilation unit analysis terminated.
。对select语句的INTO子句使用用户定义的记录结构。如果该国家不存在,则提出例外
现在这里是我的代码的副本,不断返回错误:
{{1}}
答案 0 :(得分:0)
该错误应该是告诉您的第二个错误,它不会再看了。还应该有另一个错误。我想ed_type并不存在于过程之外,所以它不能将ed_type作为OUT参数。 ed_type在外面是不知道的。
答案 1 :(得分:0)
第一件事 - 看你在声明(p_country_demo_rec)和开始(v_country_demo_rec)部分时使用了不同的变量。我认为这可能是一个错误。
尝试以下脚本: - 它可能对您有帮助。
CREATE OR REPLACE PROCEDURE COUNTRY_DEMOGRAPHICS
IS
TYPE ED_TYPE IS TABLE OF countries%ROWTYPE;
p_country_demo_rec ED_TYPE;
BEGIN
SELECT * BULK COLLECT INTO p_country_demo_rec FROM countries;
FOR i IN p_country_demo_rec.FIRST..p_country_demo_rec.LAST
LOOP
DBMS_OUTPUT.PUT_LINE('Country Name:'||p_country_demo_rec(i).country_name ||
'Location:' || p_country_demo_rec(i).location ||
'Capitol:' || p_country_demo_rec(i).capitol ||
'Population:' || p_country_demo_rec(i).population ||
'Airports:' || p_country_demo_rec(i).airports ||
'Climate:' || p_country_demo_rec(i).climate );
END LOOP;
IF SQL%NOTFOUND THEN
RAISE_APPLICATION_ERROR(-20201, 'This country does not exist.');
END IF;
END;
/
EXECUTE COUNTRY_DEMOGRAPHICS;
注意: - 您可以在过程中使用一个参数(IN参数)来获取特定国家/地区受众特征数据,并在select语句中使用该参数来过滤掉特定国家/地区。
示例:
CREATE OR REPLACE PROCEDURE COUNTRY_DEMOGRAPHICS(p_country_name IN varchar2)
Select语句如下:
SELECT * BULK COLLECT INTO p_country_demo_rec FROM countries where
country_name = ||p_country_name;
执行部分:
EXECUTE COUNTRY_DEMOGRAPHICS(p_country_name);