Oracle PL/SQL 带输入参数的函数
Oracle PL/SQL function with input parameter
我是 PL/SQL 的初学者。我创建了 FUNCTION,它反转字符串并更改字符串中的每 3 个字符。我在一些帮助下创建了这个函数。现在我需要删除这个 'abcdeFgh'
并设置函数,这样我就有了输入参数。我该怎么做?
CREATE OR REPLACE FUNCTION RIS.tmp_tzk1_f_preslozi_string
RETURN string
IS
str VARCHAR2(20) := 'abcdeFgh';
znak CHAR := '';
len NUMBER;
brojac_svako_trece INTEGER := 0;
str1 VARCHAR(20) := '';
BEGIN
len := LENGTH(str);
FOR i IN REVERSE 1..len
LOOP
brojac_svako_trece := brojac_svako_trece +1;
znak := SUBSTR (str, i, 1);
IF MOD(brojac_svako_trece,3) = 0 THEN
brojac_svako_trece := 0;
IF ASCII(znak)<97 THEN
znak := LOWER(znak);
ELSE
znak := UPPER(znak);
END IF;
END IF;
str1 := str1 || znak;
END LOOP;
RETURN str1;
dbms_output.put_line(str1);
END;
DECLARE
RetVal VARCHAR2 (32767);
BEGIN
RetVal := RIS.TMP_TZK1_F_PRESLOZI_STRING;
dbms_output.put_line(RetVal);
END;
其实很简单:
CREATE OR REPLACE FUNCTION RIS.tmp_tzk1_f_preslozi_string(
str IN VARCHAR2 --> add input params here
) RETURN string
IS
znak CHAR := '';
len NUMBER;
brojac_svako_trece INTEGER := 0;
str1 VARCHAR(20) := '';
BEGIN
-- your code goes here
END;
这应该可以完成您非常接近的工作。
CREATE OR REPLACE FUNCTION tmp_tzk1_f_preslozi_string (str IN VARCHAR)
RETURN string
IS
znak CHAR := '';
len NUMBER;
brojac_svako_trece INTEGER := 0;
str1 VARCHAR(20) := '';
BEGIN
len := LENGTH(str);
FOR i IN REVERSE 1..len
LOOP
brojac_svako_trece := brojac_svako_trece +1;
znak := SUBSTR (str, i, 1);
IF MOD(brojac_svako_trece,3) = 0 THEN
brojac_svako_trece := 0;
IF ASCII(znak)<97 THEN
znak := LOWER(znak);
ELSE
znak := UPPER(znak);
END IF;
END IF;
str1 := str1 || znak;
END LOOP;
RETURN str1;
END;
DECLARE
RetVal VARCHAR2 (32767);
BEGIN
RetVal := TMP_TZK1_F_PRESLOZI_STRING('DobarDan');
dbms_output.put_line(RetVal);
END;
我是 PL/SQL 的初学者。我创建了 FUNCTION,它反转字符串并更改字符串中的每 3 个字符。我在一些帮助下创建了这个函数。现在我需要删除这个 'abcdeFgh'
并设置函数,这样我就有了输入参数。我该怎么做?
CREATE OR REPLACE FUNCTION RIS.tmp_tzk1_f_preslozi_string
RETURN string
IS
str VARCHAR2(20) := 'abcdeFgh';
znak CHAR := '';
len NUMBER;
brojac_svako_trece INTEGER := 0;
str1 VARCHAR(20) := '';
BEGIN
len := LENGTH(str);
FOR i IN REVERSE 1..len
LOOP
brojac_svako_trece := brojac_svako_trece +1;
znak := SUBSTR (str, i, 1);
IF MOD(brojac_svako_trece,3) = 0 THEN
brojac_svako_trece := 0;
IF ASCII(znak)<97 THEN
znak := LOWER(znak);
ELSE
znak := UPPER(znak);
END IF;
END IF;
str1 := str1 || znak;
END LOOP;
RETURN str1;
dbms_output.put_line(str1);
END;
DECLARE
RetVal VARCHAR2 (32767);
BEGIN
RetVal := RIS.TMP_TZK1_F_PRESLOZI_STRING;
dbms_output.put_line(RetVal);
END;
其实很简单:
CREATE OR REPLACE FUNCTION RIS.tmp_tzk1_f_preslozi_string(
str IN VARCHAR2 --> add input params here
) RETURN string
IS
znak CHAR := '';
len NUMBER;
brojac_svako_trece INTEGER := 0;
str1 VARCHAR(20) := '';
BEGIN
-- your code goes here
END;
这应该可以完成您非常接近的工作。
CREATE OR REPLACE FUNCTION tmp_tzk1_f_preslozi_string (str IN VARCHAR)
RETURN string
IS
znak CHAR := '';
len NUMBER;
brojac_svako_trece INTEGER := 0;
str1 VARCHAR(20) := '';
BEGIN
len := LENGTH(str);
FOR i IN REVERSE 1..len
LOOP
brojac_svako_trece := brojac_svako_trece +1;
znak := SUBSTR (str, i, 1);
IF MOD(brojac_svako_trece,3) = 0 THEN
brojac_svako_trece := 0;
IF ASCII(znak)<97 THEN
znak := LOWER(znak);
ELSE
znak := UPPER(znak);
END IF;
END IF;
str1 := str1 || znak;
END LOOP;
RETURN str1;
END;
DECLARE
RetVal VARCHAR2 (32767);
BEGIN
RetVal := TMP_TZK1_F_PRESLOZI_STRING('DobarDan');
dbms_output.put_line(RetVal);
END;