【发布时间】:2013-12-16 17:21:29
【问题描述】:
我对某些 P-SQL 语法有疑问。我已将代码示例减少到下面的最小值。
以下作品:
CREATE OR REPLACE FUNCTION MyFunction(LINE_ID SMALLINT)
RETURN VARCHAR2 IS
tmp VARCHAR2(4000);
BEGIN
tmp := CAST(LINE_ID AS VARCHAR2);
RETURN(tmp);
END MyFunction;
/
但是,我需要将 LINE_ID 参数更改为 NUMBER(5, 0),之后以下操作不起作用:
CREATE OR REPLACE FUNCTION MyFunction2(LINE_ID NUMBER(5, 0))
RETURN VARCHAR2 IS
tmp VARCHAR2(4000);
BEGIN
tmp := CAST(LINE_ID AS VARCHAR2);
RETURN(tmp);
END MyFunction2;
/
Oracle SQL Developer 3.2.10.09 中的错误信息是
错误(1,36):PLS-00103:在期待一个时遇到符号“(” 以下内容: := 。 ) , @% 默认字符 符号“:=” 被替换为“(”以继续。
我应该如何编写CAST 语句才能使其与NUMBER(5, 0) 而不是SMALLINT 一起使用?
同样,这不是原始代码,但我正在寻找一种不会与第二个版本有太多偏差的解决方案,而且最好也不是另一个函数调用。 VARCHAR2 返回类型也很重要。
【问题讨论】:
-
您可以随时尝试 to_char。它甚至可能会起作用。
-
为什么要重新发明轮子? Oracle 已经为此提供了一个(更通用的)功能:
to_char() -
这是从 SQL Server 脚本转换而来的。因此,我最初对这个事实“视而不见”。我应该在我的问题中提到这一点,以便其他人了解我来自哪里。