这就是我创建函数的方法
CREATE OR REPLACE FUNCTION udf_FullName(P_CUSTOMER_NO IN number)
RETURN VARCHAR
IS
var_fullname VARCHAR(255);
BEGIN
SELECT C.LNAME + ',' + C.FNAME AS FullName INTO var_fullname
FROM Customer C
WHERE C.CUSTOMER_NO = P_CUSTOMER_NO;
RETURN var_fullname;
END;
这就是我试图调用函数的方式
DECLARE
var_fullname VARCHAR(255);
BEGIN
dbms_output.put_line(rpad('Customer #',15) || rpad('Full Name',15));
FOR rec IN (SELECT customer_no From customer)
LOOP
SELECT udf_FullName(rec.customer_no) AS FullName INTO var_fullname
FROM dual;
dbms_output.put_line(rpad(rec.customer_no,15) || rpad(var_fullname,15));
END LOOP;
END;
初始化customer表时,customer_no列被声明为类型编号(38,0)。我认为这与我的问题有关,但我已经尝试了一切我能想到的解决方法。
答案 0 :(得分:0)
问题出在这条线上。
SELECT C.LNAME + ',' + C.FNAME AS FullName
在SQL中,我们使用||
进行连接而不是+