当前位置: 首页 > 图文教程 > 数据库 > MYSQL > 在函数间不能传递32个以上参数的疑难问题

MYSQL
mysql "too many connections" 错误 之 mysql解决方法
MySQL: mysql is not running but lock exists 的解决方法
使用mysql中遇到的几个问题
MySQL一个索引最多有多少个列?真实的测试例子
MySQL里Create Index 能否创建主键 Primary Key
MySQL 创建索引(Create Index)的方法和语法结构及例子
MYSQL 优化常用方法
linux mysql 找回密码
mysql 动态执行存储过程语句
MySQL 查找价格最高的图书经销商的几种SQL语句
MySQL 客户端不输入用户名和密码直接连接数据库的2个方法
mysql 查询表中平均分最低的班级
mysql 左连接、右连接和内连接
Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)
Mysql LONGTEXT 类型存储大文件(二进制也可以) (修改+调试+整理)
Mysql 插入中文及中文查询 (修改+调试)
mysql 数据表中查找重复记录
MySql .frm数据库文件导入的问题
解决hibernate+mysql写入数据库乱码
mySQL UNION运算符的默认规则研究

MYSQL 中的 在函数间不能传递32个以上参数的疑难问题


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 119 ::
收藏到网摘: n/a

本文中的示例主要是解决在函数间不能传递多个(32个以上)参数的问题,解题的具体思路就是采用记录类型作为函数的输入和返回值,所以我们需要先定义一个视图,把它作为一个结构类型,函数的输入和输出就用它作为数据类型,但是在研究过程中存在record类型不能直接作为函数的参数传入参数,所以我们需要建立一个函数test_rec3,这个函数的主要功能就是返回一个test_view形式的record结构,这样在 test_rec2中将test_rec3的结果作为参数传入,可以避免在直接传入record类型变量的时候的错误,在test_rec2中,又可以给其他传入参数的其他属性赋值,这样可以多建几个类似test_rec2的函数,完成对传入阐述的赋值,最后在test_rec1中赋值给一个record 类型变量,这样test_rec2的返回值可以作为其他函数输入,而且这个输入的变量相当于一个结构,虽然它是一个变量,但却包含了多个变量的信息,从而实现了向一个函数中输入操作系统限制数量的参数(32个) 。

以下为引用的内容:

create view test_view (p1,p2) as select cast(null as int),cast(null asint)

create or replace function test_rec1(int,int) returns test_view as

'

declare

view_rec test_view%rowtype ;

view_rec1 test_view%rowtype ;

begin

view_rec.p1 = 2;

view_rec.p2 = 3;

select * into view_rec1 from test_rec2( test_rec3($1),$2);

return view_rec1;

end;'language 'plpgsql';

create or replace function test_rec2(test_view,int) returns test_view as

'

declare

view_return alias for $1;

begin

view_return.p2 = $2;

return view_return;

end;'language 'plpgsql';

create or replace function test_rec3(int) returns test_view as

'

declare

view_return test_view%rowtype;

begin

view_return.p1 = $1;

view_return.p2 =0;

return view_return;

end;'language 'plpgsql';