各位高手初学数据库不久,遇到一个问题,不知道如何解决。我现在想把Oracle里的一个存储过程改写到pg下,在Oracle中,存储过程的输入参数类型(in CUR_SYS_REP_CONTENT)是在包中定义的,如下代码
TYPE REC_SYS_REP_CONTENT IS RECORD (id test_content.id%TYPE,
content test_content.content%TYPE);TYPE CUR_SYS_REP_CONTENT IS REF CURSOR RETURN REC_SYS_REP_CONTENT;首先我不太确定这段代码是什么意思?是不是先等价于把一个表type为一个数据类型,然后把一个refcursor游标type为一个数据类型,返回之前定义的这个数据类型的值。可是这个定义游标和返回之前定义数据类型的语句我在pg下怎么尝试都不成功,谢谢各位高手帮忙赐教,小弟不胜感激!
TYPE REC_SYS_REP_CONTENT IS RECORD (id test_content.id%TYPE,
content test_content.content%TYPE);TYPE CUR_SYS_REP_CONTENT IS REF CURSOR RETURN REC_SYS_REP_CONTENT;首先我不太确定这段代码是什么意思?是不是先等价于把一个表type为一个数据类型,然后把一个refcursor游标type为一个数据类型,返回之前定义的这个数据类型的值。可是这个定义游标和返回之前定义数据类型的语句我在pg下怎么尝试都不成功,谢谢各位高手帮忙赐教,小弟不胜感激!
解决方案 »
- mysql导入sql文件出错!
- 求一sql语句
- 我今天配置了MySQL数据库 也安装了phpmyadmin 请问,一下 我想禁用 root 账户 怎么弄,或者说,怎么不让,root 账户远程登录呢,
- 求 按分组把某字段连接起来的sql语句。请教
- mysql5,支持rollback吗,为什么不行
- 如何获取一个数据库中所有的表名呢?
- 在线高分急求-Mysql全文搜索问题
- 分数大大的有,只要解决以下问题(mysql入门问题)
- Mysql中使用sql_calc_found_rows()返回的行数步正确
- 数据库两张表关联查询问题
- MySql 永久设置character_set_server值
- mysql5.0的数据库存放路径怎么么修改?
content test_content.content%TYPE); TYPE CUR_SYS_REP_CONTENT IS REF CURSOR RETURN REC_SYS_REP_CONTENT; -----------------------------------
定义一个记录类型,定义一个游标类型,返回这个记录类型主要是oracle里面不支持直接返回结果集,所以,通过你上面的语法来进行处理达到存储过程返回结果集的效果,如果pg下直接存储过程直接返回结果的话,那直接在存储过程中select出表的结果返回就可以了(mysql存储过程是支持直接返回结果集的)
Oracle确实很强大,不过就是还不太会使。pg支持UDF,只是我刚才一直不明白那两个TYPE到底是做什么的,现在知道了,谢谢!
thank u!看了你的回复我明白了,就是写一个存储过程把结果集返回是同样的效果吧!Oracle没好好学过,就知道一些大概的语法。在麻烦你告诉我一下,怎么把分数给你,我第一次发帖,呵呵。
谢谢,我用的pg自己的TYPE语法,确实是不支持这么定义,第一个type还可以把表定义成记录,第二个我就晕了。
真搞不懂你为什么一定要按这样的结构搞
oracle那样搞目的是能让存储过程返回结果集(因为oracle的存储过程不支持直接返回结果集,所以通过这种方式来转换达到返回结果集的目的)
如果pg支持存储过程返回结果集的话,直接在存储过程中select出结果,然后外面调用就行了嘛
呵呵,我表达不清,就是你说的这个意思。看了几个DBMS的语法,找一些题来熟悉,以后还是得多看看Oracle。能教教我怎么给分么?
霍霍,thanks,我结贴了。