环境:Oracle SQL Developer
方案:要比较2个不同表中的度量并在条件满足的情况下运行存储过程
试图将每个表的度量存储在变量中,并比较变量并执行存储过程
delete
--For Variable1
Declare
Variable1 int;
Begin
select sum(sales) from table1 into Variable1;
end;
--For Variable2
Declare
Variable2 int;
Begin
select sum(sales) from table2 into Variable2;
end
--Creating stored procedure
CREATE OR REPLACE PROCEDURE Proc1 as
BEGIN
IF (Variable1=Variable2) THEN
PROC2()
END IF;
END Proc1;
和Variable1
内答案 0 :(得分:2)
正确的语法是select ... into ... from ..
如果要在proc1
中使用变量,则应在该proc中定义它们。
CREATE OR REPLACE PROCEDURE Proc1 as
Variable1 int;
Variable2 int;
BEGIN
select sum(sales) into Variable1 from table1 ;
select sum(sales) into Variable2 from table2 ;
IF (Variable1=Variable2) THEN
PROC2();
END IF;
END Proc1;
或者您可以将值作为参数传递
CREATE OR REPLACE PROCEDURE Proc1(Variable1 in int, Variable2 in int) as
BEGIN
-- Using Parameter values
IF (Variable1=Variable2) THEN
PROC2();
END IF;
END Proc1;
/
Declare
Variable1 int;
Variable2 int;
Begin
select sum(sales) into Variable1 from table1;
select sum(sales) into Variable2 from table2;
-- pass values into the procedure
proc1( Variable1,Variable2 );
END;
/
答案 1 :(得分:0)
您的变量仅在每个PL / SQL块的持续时间内有效。 因此,如果要比较variable1和variable2,则必须将它们放在同一PL / SQL块中。 那会给你的:
Declare
Variable1 int;
Variable2 int;
Begin
select sum(sales) into Variable1 from table1;
select sum(sales) into Variable2 from table2;
IF Variable1 = Variable2 THEN
PROC2;
END IF;
END;
/
并非所有这些代码都可以在匿名PL / SQL块中。 如果愿意,还可以将其存储在过程中。