以上是SQL-SERVER代码,用ORACLE如何写?
解决方案 »
- Oracle表3表做关联UPDATE
- oracle 10g 启动过程,输入alter database mount后出现2,求指教~
- win7 64位+VS2010 连不上Oracle数据库
- 安装Oracle遇到的问题
- app_folder.define_folder_block 的问题
- 跪求!!!enterprise manager 配置失败
- sys_connect_by_path 在ORACLE8怎么用
- 求两表组合的sql语句
- solaris10下的oracle10g服务的启动
- ORA-01002: fetch out of sequence(请帮忙,高分)
- oracle不同版本中使用视图问题
- 在触发器中使用 execute immediate sql_str 出错啦,帮我看看吧!
-----------------------------------
--过程名称:SP_GETylbxdjzh
--过程功能: 获得ylbxdjzh
--入口参数: 调用类型
--创建作者: hewei2003
--创建时间: 2004-04-25
-----------------------------------create or replace procedure SP_GETylbxdjzh(TYPE in int) is
ybylbxdjh VARCHAR(15);
jfdwmc VARCHAR(50);
NUM INT; --ybylbxdjh已用次数
FLAG INT; --tsdwbz
STATE INT; --ybylbxdjh状态:1,只有普通单位;2,只有特殊群体;
--3,已有普通单位和特殊群体;4,没有普通单位和特殊群体
NEEDED INT; --需要输出的
PICTYPE INT; --ICO_TYPE
ybzt INT;
i number; --定义游标
Cursor MYCUR is SELECT YB_CBDW_BXDJ.ybylbxdjh,jfdwmc,nvl(TT.NUM,0) AS NUM,TT.FLAG
FROM YB_CBDW_BXDJ LEFT OUTER JOIN
(SELECT ybylbxdjh,COUNT(tsdwbz) AS NUM,MAX(tsdwbz) AS FLAG
FROM YB_DWDA GROUP BY ybylbxdjh) AS TT
ON YB_CBDW_BXDJ.ybylbxdjh = TT.ybylbxdjh
ORDER BY YB_CBDW_BXDJ.ybylbxdjh
begin --创建表
execute immediate 'CREATE TABLE #T (ybylbxdjh VARCHAR(15),jfdwmc VARCHAR(50),ICO_TYPE int)';
--打开游标进行处理
for i in MYCUR--变量i表示的是记录的一行,如果下面有引用错误的地方自己再改一下
loop
STATE := 0;
NEEDED := 0;
PICTYPE := 0;
IF i.NUM < 1 then
STATE := 4;
ELSIF i.NUM = 1 then
STATE := i.FLAG; --(1 OR 2)
ELSE
STATE := 3;
end if;
---------------------------------------------
IF STATE = 1 then --1,只有普通的
IF TYPE = 0 then
NEEDED := 1;
PICTYPE := 2;
end if; IF TYPE = 1 then
SELECT ybzt into ybzt FROM YB_DWDA WHERE ybylbxdjh = i.ybylbxdjh;
IF ybzt < 4 then
NEEDED := 1;
PICTYPE := 2;
ELSE
NEEDED := 0;
PICTYPE := 0;
end if;
IF TYPE = 2 then
NEEDED := 1;
PICTYPE := 1;
end if;
end if;
---------------------------------------------------
中间这段的代码可以照着上面的改 ---------------------------------------------------
--输出
IF NEEDED = 1 then
INSERT INTO #T VALUES (i.ybylbxdjh ,i.jfdwmc ,PICTYPE )
end if; end loop;
execute immediate 'select * from #T';
execute immediate 'drop table #T';
end SP_GETylbxdjzh;My Email:[email protected]