Parameters 带参数的PL/SQL过程

Parameters 带参数的PL/SQL过程,parameters,plsql,procedure,Parameters,Plsql,Procedure,我累死了,我的作业七小时后就要交了。我需要一个善良的灵魂来帮助我 这是我的第一个PL/SQL类。我们正在开始程序和功能方面的工作 这就是我一直坚持的一个。问题是: 此问题使用wf_国家表 A.创建一个接受国家/地区id作为参数的过程,并显示国家/地区的名称及其名称 国会大厦。命名您的程序以获取国家信息。保存过程定义以供以后使用 B.使用国家/地区id 90从匿名块执行您的过程 C.从匿名块重新执行该过程,这次使用country_id 95。会发生什么 D.从保存的SQL中检索过程代码,并对其进行

我累死了,我的作业七小时后就要交了。我需要一个善良的灵魂来帮助我

这是我的第一个PL/SQL类。我们正在开始程序和功能方面的工作

这就是我一直坚持的一个。问题是:

此问题使用wf_国家表

A.创建一个接受国家/地区id作为参数的过程,并显示国家/地区的名称及其名称 国会大厦。命名您的程序以获取国家信息。保存过程定义以供以后使用

B.使用国家/地区id 90从匿名块执行您的过程

C.从匿名块重新执行该过程,这次使用country_id 95。会发生什么

D.从保存的SQL中检索过程代码,并对其进行修改,以在异常处理程序中捕获未找到数据的异常。再次使用国家/地区id 95重新执行该程序。现在发生了什么

以下是我为A写的内容:

CREATE OR REPLACE PROCEDURE get_country_info
(p_id IN wf_countries.country_id%TYPE,
p_capitol OUT wf_countries.capitol%TYPE,
p_name OUT wf_countries.country_name%TYPE)
IS
BEGIN
SELECT capitol, country_name 
INTO p_capitol, p_name
FROM wf_countries
WHERE country_id=p_id;
END;
我让它跑了。但后来我意识到,如果我试图通过键入以下内容来调用该过程:

BEGIN
get_country_info
END;
我需要这个国家的身份证。但是我不能仅仅把get_country_info(90)放进去,因为它需要更多的参数。我只需要使用国家ID作为参数,并显示名称和国会大厦


我真的很沮丧,非常感谢你提供的任何帮助

根据您的问题说明:获取国家/地区信息应该只接受一个参数:国家/地区id

  • 删除其他两个参数,并在过程中将它们声明为局部变量

  • 要显示该值,请使用

如果在SQL*Plus中运行,请不要忘记先运行:

将服务器输出设置为ON

另外,对于例外部分,请查看

然后,在呼叫时:

DECLARE retCursor SYS_REFCURSOR;
BEGIN
    get_country_info(123, retCursor);
END;
/
试试这个:

CREATE OR REPLACE PROCEDURE get_country_info
  (p_id  IN  wf_countries.country_id%TYPE)
IS
  vCapitol  wf_countries.capitol%TYPE;
  vName     wf_countries.country_name%TYPE;
BEGIN
  SELECT capitol,
         country_name 
    INTO vCapitol,
         vName
    FROM wf_countries
    WHERE country_id = p_id;

  DBMS_OUTPUT.PUT_LINE('Name='  || vName || '  Capitol=' || vCapitol);
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    DBMS_OUTPUT.PUT_LINE('No data found for COUNTRY_ID=' || p_id);
END;

认真地您正在堆栈溢出中请求有关作业的帮助??
CREATE OR REPLACE PROCEDURE get_country_info
  (p_id  IN  wf_countries.country_id%TYPE)
IS
  vCapitol  wf_countries.capitol%TYPE;
  vName     wf_countries.country_name%TYPE;
BEGIN
  SELECT capitol,
         country_name 
    INTO vCapitol,
         vName
    FROM wf_countries
    WHERE country_id = p_id;

  DBMS_OUTPUT.PUT_LINE('Name='  || vName || '  Capitol=' || vCapitol);
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    DBMS_OUTPUT.PUT_LINE('No data found for COUNTRY_ID=' || p_id);
END;