微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

程序中的文本参数?

如何解决程序中的文本参数?

我有一项任务要解决

创建一个过程,该过程将根据国家/地区表中指定的国家/地区名称列出位置表中的所有分支机构。列表将是 country_name、city、street_address、state_province。如果该国家/地区没有分支机构,请处理这种情况。在 PL/sql调用“赞比亚”的过程。

我写了这个,但我在某处有错误。你能帮我么?谢谢。

SET SERVEROUTPUT ON;
CREATE OR REPLACE PROCEDURE POBOCKY(C_NAME IN COUNTRIES.COUNTRY_NAME VARCHAR2(50)%TYPE)
IS CITY_P LOCATIONS.CITY VARCHAR2(30)%TYPE;
S_ADDRESS LOCATIONS.STREET_ADDRESS VARCHAR2(40)%TYPE;
S_PROVINCE LOCATIONS.STATE_PROVINCE VARCHAR2(25)%TYPE;
BEGIN
SELECT COUNTRY_NAME,CITY,STREET_ADDRESS,STATE_PROVINCE INTO
C_NAME,CITY_P,S_ADDRESS,S_PROVINCE FROM COUNTRIES
FULL OUTER JOIN LOCATIONS ON COUNTRIES.COUNTRY_ID = LOCATIONS.COUNTRY_ID
GROUP BY COUNTRY_NAME;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
DBMS_OUTPUT.put_line('Error');
RAISE;
END POBOCKY;

解决方法

  • 如果您从列中继承数据类型,则删除显式数据类型
  • 如果参数是IN,则不能选择进去
  • 全外连接?为什么?不应该是内连接吗...
    • ... 以及 WHERE 子句,以便您可以按作为参数传递的城市名称过滤行?
  • 如果有几行可以返回,考虑使用循环
    • 这也意味着您不必担心局部变量和(最常见的)异常,例如 no_data_found 和 too_many_rows
  • 使用表别名并在列名之前使用它们是一个好习惯;按照你的说法,不可能知道哪个列属于哪个表(所以我不会猜测)

很快,就像这样:

create or replace procedure pobocky
  (c_name in countries.country_name%type)
is 
begin
  for cur_r in 
    (select city,street_address,state_province 
     from countries join locations on countries.country_id = locations.country_id
     where coutry_name = c_name
    )
  loop
    dbms_output.put_line(c_name ||','|| cur_r.city ||','|| cur_r.street_address ||','||
      cur_r.state_province);
  end loop;
end pobocky;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?