Oracle 创建以下过程时,不断获取编译错误
创建一个名为“select_city”的过程,该过程接受一个输入参数user_id类型number和一个输出参数city_details类型varchar。此过程用于显示用户的城市详细信息。如果用户来自班加罗尔,则将城市详细信息显示为“用户来自班加罗尔”,或者如果用户来自钦奈,则将城市详细信息显示为“用户来自钦奈”,否则将城市详细信息显示为“用户来自其他城市”Oracle 创建以下过程时,不断获取编译错误,oracle,Oracle,创建一个名为“select_city”的过程,该过程接受一个输入参数user_id类型number和一个输出参数city_details类型varchar。此过程用于显示用户的城市详细信息。如果用户来自班加罗尔,则将城市详细信息显示为“用户来自班加罗尔”,或者如果用户来自钦奈,则将城市详细信息显示为“用户来自钦奈”,否则将城市详细信息显示为“用户来自其他城市” CREATE PROCEDURE select_city ( user_id IN user_details.id%type,
CREATE PROCEDURE select_city ( user_id IN user_details.id%type,
city_details OUT VARCHAR2(255) )
AS
BEGIN
SELECT CASE
WHEN city = 'Bangalore' THEN 'User is from Bangalore'
WHEN city = 'Chennai' THEN 'User is from Chennai'
ELSE 'User is from other cities'
END tmp_status INTO city_details
FROM contact cnt
WHERE cnt.id = user_id;
END;
OUT
参数不应具有大小。移除它
(也可能与您所获得的错误无关),考虑使用<代码>创建或替换< /代码>,因为任何后续的<代码>创建>代码>将作为过程失败-虽然无效-已经存在,所以您必须先删除它。
样本表:
SQL> create table contact as
2 select 'Bangalore' city, 1 id from dual;
Table created.
程序:
SQL> create or replace procedure select_city
2 (user_id in number,
3 city_details out varchar2 --> no size here
4 )
5 as
6 begin
7 select case
8 when city = 'Bangalore' then
9 'User is from Bangalore'
10 when city = 'Chennai' then
11 'User is from Chennai'
12 else
13 'User is from other cities'
14 end tmp_status
15 into city_details
16 from contact cnt
17 where cnt.id = user_id;
18 end;
19 /
Procedure created.
测试:
SQL> set serveroutput on;
SQL> declare
2 l_citydet varchar2(255);
3 begin
4 select_city(1, l_citydet);
5 dbms_output.put_line(l_citydet);
6 end;
7 /
User is from Bangalore
PL/SQL procedure successfully completed.
SQL>
请点击编辑您的问题,选择突出显示您的代码,并使用文本框上方的按钮,这看起来像是
{}
。此外,在您的软件开发生命的剩余时间内,在不包含确切错误消息的情况下,不要再对其他软件工程师说“我遇到了错误”。OUT或IN或IN OUT不重要。形式参数没有给出大小。但只有数据类型。