在 Oracle sql 中使用 declare 和 if 语句?
Using declare and if statements in Oracle sql?
您好,我遇到了 运行 这个查询的问题。我正在尝试获取输入参数并根据该值在查询中使用它。
我得到的错误是:
**Error(26,3): PLS-00103: Encountered the symbol "IF" when expecting one of the following: begin function pragma procedure subtype type <an identifier> <a double-quoted delimited-identifier> current cursor delete exists prior **
create or replace
PROCEDURE GET_STATES (
i_id IN NUMBER,
o_result OUT SYS_REFCURSOR,
IS
DECLARE country VARCHAR2 = '';
BEGIN
o_sqlmsg := 'SUCCESS';
o_sqlcode := 0;
IF i_id == 284
THEN country := 'US';
ELSE country := 'CA';
END IF;
OPEN o_result FOR
Select cnint as Id, cnabbv as Code, rtrim(cnname) as Name, i_id as CId
from country
order by cnname;
您的过程中不应包含 DECLARE
关键字,并且缺少最终的 END 语句以及其他一些小的语法问题。将其更改为
create or replace
PROCEDURE GET_STATES (i_id IN NUMBER,
o_result OUT SYS_REFCURSOR)
IS
country VARCHAR2;
BEGIN
o_sqlmsg := 'SUCCESS';
o_sqlcode := 0;
IF i_id = 284
THEN country := 'US';
ELSE country := 'CA';
END IF;
OPEN o_result FOR
Select cnint as Id,
cnabbv as Code,
rtrim(cnname) as Name,
i_id as CId
from country
order by cnname;
END GET_STATES;
祝你好运。
您好,我遇到了 运行 这个查询的问题。我正在尝试获取输入参数并根据该值在查询中使用它。
我得到的错误是:
**Error(26,3): PLS-00103: Encountered the symbol "IF" when expecting one of the following: begin function pragma procedure subtype type <an identifier> <a double-quoted delimited-identifier> current cursor delete exists prior **
create or replace
PROCEDURE GET_STATES (
i_id IN NUMBER,
o_result OUT SYS_REFCURSOR,
IS
DECLARE country VARCHAR2 = '';
BEGIN
o_sqlmsg := 'SUCCESS';
o_sqlcode := 0;
IF i_id == 284
THEN country := 'US';
ELSE country := 'CA';
END IF;
OPEN o_result FOR
Select cnint as Id, cnabbv as Code, rtrim(cnname) as Name, i_id as CId
from country
order by cnname;
您的过程中不应包含 DECLARE
关键字,并且缺少最终的 END 语句以及其他一些小的语法问题。将其更改为
create or replace
PROCEDURE GET_STATES (i_id IN NUMBER,
o_result OUT SYS_REFCURSOR)
IS
country VARCHAR2;
BEGIN
o_sqlmsg := 'SUCCESS';
o_sqlcode := 0;
IF i_id = 284
THEN country := 'US';
ELSE country := 'CA';
END IF;
OPEN o_result FOR
Select cnint as Id,
cnabbv as Code,
rtrim(cnname) as Name,
i_id as CId
from country
order by cnname;
END GET_STATES;
祝你好运。