То, что вы хотите сказать, это:
CREATE PROCEDURE build_jics_user (pid INT)
RETURNING CHAR(8);
DEFINE username CHAR(8);
SELECT LOWER((SUBSTR(firstname,0,1))||(SUBSTR(lastname,0,7))) INTO username
FROM id_rec
WHERE id = pid;
RETURN username;
END PROCEDURE;
... и выполните это так:
EXECUTE PROCEDURE build_jics_user(42);
ОБНОВЛЕНИЕ
Если цель этого состоит в том, чтобы быть функцией, в которой она требуется внутри некоторого другого SQL, тогда вы можете сделать следующее:
CREATE FUNCTION jics_user(fname VARCHAR(255), lname VARCHAR(255))
RETURNING CHAR(8);
RETURN LOWER(SUBSTR(fname,0,1) || SUBSTR(lname,0,7));
END FUNCTION;
... и выполнить ее так:
SELECT id, firstname, lastname, jics_user(firstname, lastname) AS jics_user, ...
FROM id_rec;
Нет реальной технической разницы между ПРОЦЕДУРОЙ и ФУНКЦИЕЙ, это скорее утверждение о том, как она используется.