0

我无法在 oracle 过程中创建选择语句。请帮我创建这个。现在我在一个过程中创建了 insert,update.delete 语句,但我无法创建一个 select 语句。请帮助我使用游标创建选择语句。

c_dbuser OUT SYS_REFCURSOR

ELSIF (TYPE_ =1) THEN

  OPEN c_dbuser FOR
  SELECT * FROM tbl_discount_master ;
  CLOSE c_dbuser;

END IF;

call procedure_name(xx,xx,xx,1);

如何使用调用过程语句获取选定的值。

4

2 回答 2

1

除了其他建议之外,当您获得正好一行时,您还可以使用此解决方案。

DECLARE
    myvar1 mytable.mycolumn1%TYPE;
    myvar2 mytable.mycolumn2%TYPE;
BEGIN
    SELECT mycolumn1, mycolumn2
      INTO myvar1, myvar2
      FROM mytable
     WHERE …;
END;

如果没有选定的行 ( NO_DATA_FOUND) 或有多个行( ),这将引发异常TOO_MANY_ROWS

于 2012-12-01T14:43:24.920 回答
0

select 和 insert/update/delete 的区别在于您需要选择某个结构,可以是一个或多个变量,也可以是 rowtype 变量。

尽可能避免使用显式游标,以支持更快、更少冗长且不易出错的隐式游标。例如。

for cur_my_query in
  select column1,
         column2,
         ...
  from   ...
  where  ...
loop
  refer here to cur_my_query or my_query.column1 etc
end loop
于 2012-12-01T14:39:52.177 回答