在oracle过程中选择Statement

时间:2012-12-01 14:30:42

标签: oracle oracle10g oracle11g oracle9i

我无法在oracle过程中创建select语句。请帮我创建一个。 现在我在一个过程中创建了insert,update.delete语句但是我无法创建一个select语句。请帮我用光标创建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);

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

2 个答案:

答案 0 :(得分: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),则会抛出异常。

答案 1 :(得分: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