【问题标题】:Oracle SQL Function: Adding local variablesOracle SQL 函数:添加局部变量
【发布时间】:2018-12-19 07:51:48
【问题描述】:
在存储过程中,我可以添加v_bar 局部变量,如下所示:
CREATE OR REPLACE PROCEDURE A_PROC (
foo VARCHAR2
)
AS
v_bar VARCHAR2(32);
BEGIN
SELECT FOO into v_bar WHERE ...;
END A_PROC ;
问题
v_bar应该如何在下面的函数中声明?
CREATE OR REPLACE FUNCTION A_FUNC(
foo VARCHAR2
) RETURN NUMBER AS total NUMBER;
BEGIN
-- Where to declare v_bar ?
v_bar := 'bla';
END A_FUNC;
【问题讨论】:
标签:
oracle
plsql
oracle10g
【解决方案1】:
完全一样;没有不同。例如:
create or replace function a_func (foo in varchar2)
return number
as
total number;
-- v_bar varchar2(32);
v_bar number; --> should match RETURN datatype
begin
select foo into v_bar from ...;
total := v_bar * 1000;
return v_bar;
end;
【解决方案2】:
您可以在 'as' 或 'is' 子句之后声明一个变量。
CREATE OR REPLACE FUNCTION A_FUNC(
foo VARCHAR2
) RETURN NUMBER
as
v_bar VARCHAR2(32); --Variable declared
v_bar_no NUMBER(10); --Variable declared
BEGIN
-- Now you can use this variable
v_bar := 'bla';
END A_FUNC;