我是新手,问题都很基本,所以希望大家不要耻笑。
我想在Oracle数据库中创建一个function,有2个输入参数a1 varchar2、a2 varchar2,2个输出参数b1 number、b2 number;
实现的功能有b1=to_number(a1)+to_number(a2);b2=to_number(a1)-to_number(a2);并在一个已有的表t(b1 number, b2 number)(这里b1和b2为列名)中添加这次执行的值b1,b2很多东西我没有搞清楚,所以,具体问题如下:
1,所说功能能否实现否,比如可否返回2个值,可否加入t表(是否这种操作一定要在proceduer中进行)。
2,如何创建这个function(详细代码,如果不能实现的功能请面声明,代码中就不用加了)。
3,如何调用这个方法,我用的是PL/SQL进行简单的调试,请问在这里如何写调用的代码。
4,其他问题:function中是否不能用declare声明中间变量?如果能如何操作?如果不能请问为什么呢?如果需要转换数据,需要中间变量的时候怎么办呢?比如将a,b两个数的值互换,返回a,b。
我想在Oracle数据库中创建一个function,有2个输入参数a1 varchar2、a2 varchar2,2个输出参数b1 number、b2 number;
实现的功能有b1=to_number(a1)+to_number(a2);b2=to_number(a1)-to_number(a2);并在一个已有的表t(b1 number, b2 number)(这里b1和b2为列名)中添加这次执行的值b1,b2很多东西我没有搞清楚,所以,具体问题如下:
1,所说功能能否实现否,比如可否返回2个值,可否加入t表(是否这种操作一定要在proceduer中进行)。
2,如何创建这个function(详细代码,如果不能实现的功能请面声明,代码中就不用加了)。
3,如何调用这个方法,我用的是PL/SQL进行简单的调试,请问在这里如何写调用的代码。
4,其他问题:function中是否不能用declare声明中间变量?如果能如何操作?如果不能请问为什么呢?如果需要转换数据,需要中间变量的时候怎么办呢?比如将a,b两个数的值互换,返回a,b。
但是有人说这是很危险的事情。
4。函数可以在declare声明申请本地变量。
1,功能可以实现,可以返回2个值,可以加入T表。
2,暂时略过...
3,plsql中 exec procname
4,可以用declare声明变量,不过需要在存储过程头部声明。
CREATE OR REPLACE FUNCTION F_TEST(A1 IN NUMBER,
A2 IN NUMBER) RETURN NUMBER IS
B1 NUMBER;
-- 临时变量
V_TEMP NUMBER(6, 4) := 0;BEGIN
B1 := A1 + A2;
RETURN B1;
END;
/
3你可以直接用存储过程做呀:
CREATE OR REPLACE PROCEDURE P_TEST(A1 IN VARCHAR2,
A2 IN VARCHAR2)
-- 临时变量
V_B1 NUMBER ;
V_B2 NUMBER;
BEGIN
V_B1 := to_number(a1)+to_number(a2);
V_B2 := to_number(a1)-to_number(a2);
INSERT INTO T VALUES (V_B1,V_B2);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
END;
/