如何在pl/sql脚本中调用自定义函数?
CREATEORREPLACEFUNCTIONCheckUser(f_userTisubsection.aename%TYPE)RETURNBOOLEAN--函数返回类型...
CREATE OR REPLACE FUNCTION CheckUser
(
f_user Tisubsection.aename%TYPE
)
RETURN BOOLEAN --函数返回类型
IS
v_userCount NUMBER;
BEGIN
SELECT COUNT(aename) INTO v_userCount FROM Tisubsection WHERE aename = f_user;
IF (v_userCount > 0) THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
END CheckUser;
DECLARE
user Tisubsection.aename%TYPE := 'jian';
a BOOLEAN;
BEGIN
IF CheckUser(user) THEN
DBMS_OUTPUT.PUT_LINE('用户 ' || user || ' 存在');
ELSE
DBMS_OUTPUT.PUT_LINE('用户 ' || user || ' 不存在');
END IF;
END;
-------------------------------------
以上代码执行没有问题?(放在pl的test script中 按 F8)
,为什么没有结果显示出来请高手赐教。
是不是自定义的函数 也需要像过程一样存起来才能用啊??
还是脚本语法有问题呢?
1楼的朋友 用了那个传值 还是没有显示东西出来,
我只想看到'用户 ' || user || ' 存在'或者'用户 ' || user || ' 不存在'
到底该怎么操作 。。。。 展开
(
f_user Tisubsection.aename%TYPE
)
RETURN BOOLEAN --函数返回类型
IS
v_userCount NUMBER;
BEGIN
SELECT COUNT(aename) INTO v_userCount FROM Tisubsection WHERE aename = f_user;
IF (v_userCount > 0) THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
END CheckUser;
DECLARE
user Tisubsection.aename%TYPE := 'jian';
a BOOLEAN;
BEGIN
IF CheckUser(user) THEN
DBMS_OUTPUT.PUT_LINE('用户 ' || user || ' 存在');
ELSE
DBMS_OUTPUT.PUT_LINE('用户 ' || user || ' 不存在');
END IF;
END;
-------------------------------------
以上代码执行没有问题?(放在pl的test script中 按 F8)
,为什么没有结果显示出来请高手赐教。
是不是自定义的函数 也需要像过程一样存起来才能用啊??
还是脚本语法有问题呢?
1楼的朋友 用了那个传值 还是没有显示东西出来,
我只想看到'用户 ' || user || ' 存在'或者'用户 ' || user || ' 不存在'
到底该怎么操作 。。。。 展开
3个回答
展开全部
执行没有问题? 你这个 Tisubsection.aename%TYPE 的 Type 到底是什么? 如果是 VARCHAR2,我用 select CheckUser('ABC') from dual 根本就没法执行,说是 “(Error): ORA-06552: PL/SQL: Statement ignored ORA-06553: PLS-382: 表达式类型错误”哦。
检查一下你的字段类型吧。
另外,我上网查了一下,Function 的返回值,似乎不支持 Boolean,我把你的函数返回值类型改一下,就没有任何问题了。
CREATE OR REPLACE FUNCTION checkuser (f_user tisubsection.aename%TYPE)
RETURN VARCHAR2 --函数返回类型
IS
v_usercount NUMBER;
BEGIN
SELECT COUNT (aename)
INTO v_usercount
FROM tisubsection
WHERE aename = f_user;
IF (v_usercount > 0)
THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
END checkuser;
SELECT checkuser('abc') FROM dual;
检查一下你的字段类型吧。
另外,我上网查了一下,Function 的返回值,似乎不支持 Boolean,我把你的函数返回值类型改一下,就没有任何问题了。
CREATE OR REPLACE FUNCTION checkuser (f_user tisubsection.aename%TYPE)
RETURN VARCHAR2 --函数返回类型
IS
v_usercount NUMBER;
BEGIN
SELECT COUNT (aename)
INTO v_usercount
FROM tisubsection
WHERE aename = f_user;
IF (v_usercount > 0)
THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
END checkuser;
SELECT checkuser('abc') FROM dual;
展开全部
1.回复二楼的,函数是能够返回boolean型的
2.你要看显示结果,得去PL的outpu窗口看。你运行了试一下
2.你要看显示结果,得去PL的outpu窗口看。你运行了试一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是需要调用的,调用传值就可以了
select CheckUser(1) from dual
select CheckUser(1) from dual
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询