我无法在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);
如何使用调用过程语句获取所选值。
答案 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