SUMSEN

Oracle&Sql爱好者,用友NC管理员

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

这些天一直在思考和学习这个问题,今天上午10点左右终于解决了,挺完美的,函数,可以直接select,并且在PL/SQL Developer使用。

两周的时间,感觉像过了一个月。

8.24日问题的提出

这是我在itpub提出问题的帖子:http://www.itpub.net/thread-1712205-1-1.html

 

微博、qq、电话何涛、面谈赵泉、itpub、csdn询问,特别感谢以下人员

1,itpub&weibo:dingjun123 http://www.itpub.net/thread-1712205-3-1.html 30楼  给出过程的雏形

2,itpub:eric0435  http://www.itpub.net/thread-1716296-1-1.html 2楼 将过程转为函数的写法(涉及游标)

3,itpub:maoweiting http://www.itpub.net/thread-1716742-1-1.html 2楼 函数在PL/SQL Developer显示结果(之前不知道)

4,外感谢qq群健美兽族1大块头训练的北京小马哥,他首先告诉我sql server的实现方式

if (
select COUNT(1) from AR_P_PersonBase where F_Marriage is not null ) = 0
select 'Hello',GETDATE()
else
select GETDATE()

(比oracle方便多了,看帖http://www.itpub.net/thread-1712205-1-1.html

5,感谢qq好友南京一路,❶Eric Hu²º¹²❶

6,感谢同学何涛(好多的问题去他的联通机房一夜搞定),感谢赵泉(帮我想了通过动态sql,虽然没有最终实现)

7,感谢itpub&weibo:anlinew ,他是隐形的支持。

8,感谢csdn的edcvf3http://topic.csdn.net/u/20120905/09/8f9c2e7d-1ad6-43c2-9541-ade5f3302686.html 1楼 他坚定了我可以function实现

9,感谢qq群oracle爱好者的andy群主及其他各位,他们试图通过其他的写法实现

另外感谢itpub各位跟帖的热心网友。

下面是最终的function:

CREATE OR REPLACE FUNCTION func_1
(ucode varchar)
RETURN SYS_REFCURSOR
IS
v_count NUMBER;
po_result SYS_REFCURSOR;
BEGIN
  SELECT COUNT(*) INTO v_count FROM bd_corp WHERE unitcode like ucode||'%' and sealeddate IS NOT NULL;
  IF v_count >0 THEN
OPEN po_result FOR
SELECT unitcode,unitname,sealeddate FROM bd_corp  WHERE  unitcode like   ucode||'%';
  ELSE
  OPEN po_result FOR SELECT unitcode,unitname FROM bd_corp  WHERE unitcode like ucode||'%';
  END IF;
RETURN po_result;
END;

有图有真相

虽然最终这个函数不可以在NC的查询引擎使用,不过通过整个过程我进一步认识到了和使用了function

posted on 2012-09-11 10:52  sumsen  阅读(1329)  评论(0编辑  收藏  举报