关于传入参数的问题

[复制链接]
查看11 | 回复6 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
有这么一个函数:
procedure p (a in out varchar)......

declare
v_a varchar(8);
begin
p(v_a);
end;
我如上述调用,是否由于v_a为varchar(8),所以a的长度也为varchar(8)
在p函数中是否可以知道a的长度是,比如这里就返回8
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
help
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
最初由 applezh 发布
[B]有这么一个函数:
procedure p (a in out varchar)......

declare
v_a varchar(8);
begin
p(v_a);
end;
我如上述调用,是否由于v_a为varchar(8),所以a的长度也为varchar(8)
在p函数中是否可以知道a的长度是,比如这里就返回8 [/B]

首先:procedure p (a in out varchar)...... 这个东西是个过程,不是函数
其次: a因为是个参数,所以实际取值取决于调用时的输入。正如你的例子一样。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
那如何获取这个参数的长度那???
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
最初由 applezh 发布
[B]那如何获取这个参数的长度那??? [/B]

用length函数
再调用前或调用中均可以
v_lennumber;
v_len:=length(a);
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
我是指:
若传入参数是varchar(8)那么就返回8
length应该是返回实际长度把
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
最初由 applezh 发布
[B]我是指:
若传入参数是varchar(8)那么就返回8
length应该是返回实际长度把 [/B]


这个无法捕获吧。再加一个参数吧。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行