-似懂非懂-
2020-01-09 17:00
采纳率: 33.3%
浏览 514

oracle 测试存储过程,执行一次,上次的返回结果便累加上去,如何清除?

CREATE OR REPLACE PROCEDURE PROC_Test(O_CUR OUT SYS_REFCURSOR) IS
STR VARCHAR2(2000);
TB_COUNT INT;
BEGIN
--先判断全局临时表是否存在,没存在则重新建立:

SELECT COUNT(*)
INTO TB_COUNT
FROM USER_TABLES
WHERE TABLE_NAME = UPPER('temp_table');
IF TB_COUNT = 0 THEN
STR := 'CREATE GLOBAL TEMPORARY TABLE temp_table(

Name VARCHAR2(100),

Data VARCHAR2(500),

Category VARCHAR2(200)
) ON COMMIT PRESERVE ROWS';
EXECUTE IMMEDIATE STR;
END IF;
STR := 'INSERT INTO temp_table(Name,Data,Category) VALUES(''省委'',100,null)';
EXECUTE IMMEDIATE STR;
STR := 'INSERT INTO temp_table(Name,Data,Category) VALUES(''市委'',50,null)';
EXECUTE IMMEDIATE STR;
COMMIT;
STR := 'SELECT * FROM temp_table';
OPEN O_CUR FOR STR; -- 给游标变量赋值

END PROC_Test;

然后右键测试,运行,查看游标值2条数据,再运行,查看游标值就变成了4条。等大神解答

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • 微风轻轻 起 2020-01-09 17:19
    已采纳

    你在insert前加一个truncate table temp_table;

    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题