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

MYSQL
提高MySQL 查询效率的三个技巧
mysql同步复制搭建方法指南详细步骤
详解MySQL中DROP,TRUNCATE 和DELETE的区别实现mysql从零开始
MySQL Replace INTO的使用
mysql 分页优化解析
同时运行多个MySQL服务器的方法
mysql主从服务器同步心得体会
删除mysql数据库中的重复数据记录
mysql忘记密码的解决方法
mysql替换表中的字符串的sql语句
Lost connection to MySQL server during query的解决
mysql出现Error performing load command的解决方法
mysql中的“money”类型说明
mysql常见错误集锦
MYSQL administrator 使用
MYSQL初学者命令行使用指南
MySQL的Query Cache原理分析
linux下改良版本mysqldump来备份MYSQL数据库
mysql删除表中某一字段重复的记录
log引起的mysql不能启动的解决方法

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 66 ::
收藏到网摘: 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';