这些天一直在思考和学习这个问题,今天上午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的edcvf3:http://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