这个问题我在大富翁中提了N久没人答--Interbase 存储过程中如何使用域?

chendaiyin 2002-11-25 12:33:33
set term ^ ;
create procedure insert_customer as begin exit; end^
alter procedure insert_customer (
iid integer,
iname dname,/*dname,darea,daddr等都是已定义的域*/
iarea darea,/*为何要将这些域改成 char(x)之类才能通过*/
iaddr daddr,
itel dtel)
returns(
rid integer)
as
begin
rid = gen_id(gen_custid,1)^
insert into customer(
id,
name,
area,
addr,
tel)
values(
:rid,
:iname,
:iarea,
:iaddr,
:itel);
end^
...全文
31 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
chendaiyin 2002-11-25
  • 打赏
  • 举报
回复
如果SP中都不能使用域,那域还有什么用?
TR@SOE 2002-11-25
  • 打赏
  • 举报
回复
好象我没有看到过IB的资料里说可以在SP里使用域。可能只能采用明确的数据类型了。
gfh21cn 2002-11-25
  • 打赏
  • 举报
回复
到Database子论坛去找版主,他可是个Interbase专家
chendaiyin 2002-11-25
  • 打赏
  • 举报
回复
OK,谢谢TR@SOE
TR@SOE 2002-11-25
  • 打赏
  • 举报
回复
还有,你要是真的觉得没有BOOLEAN实在太难受,不如就等IB 7吧。IB 7就支持BOOLEAN类型了。
TR@SOE 2002-11-25
  • 打赏
  • 举报
回复
对啊,我就是这个意思啊。你在域里如何定义BOOLEAN,在SP里用一样的定义就可以了。

比如说:
create domain boolean
integer
check (value in (0,1));

那么我在SP里要用BOOLEAN时,就直接声明这个变量是INTEGER就可以了呀。

还有一个是临时的内部变量,除了INPUT和OUTPUT变量之外。你看一下IB的文档就知道如何定义临时内部变量了。语法一下子记不住那么多。

chendaiyin 2002-11-25
  • 打赏
  • 举报
回复
to TR@SOE:
我也是这样做的,创建了一个BOOLEAN域,但是在SP中不能用啊,那变量声明时如何写呢?
还有,我想问一下SP中的变量声明有几种?我只道的是在create 中声明的是input变量,在returns中声明的是output变量,还有什么变量吗?如要声明即不是input又不是output,只在SP中使用的变量,该如何写?
xintan 2002-11-25
  • 打赏
  • 举报
回复
去联合兴邦看看吧!(lx)http://www.qdcombine.com
TR@SOE 2002-11-25
  • 打赏
  • 举报
回复
???这个和你说的情况不大一样吧?

没有错,IB 6.5是不支持BOOLEAN。我的做法是创建一个BOOLEAN域,用1/0来代表true/false。在SP中我们也只处理1和0,不会去处理true/false啊?

如果要考虑到在客户端那里输入true/false的方便(例如,用户可能用一个CHECKBOX),并要保证传递到表里,那不是在SP里处理的。

我还是不清楚你想要做什么。我个人的理解是,即使SP里不能用域来声明变量,也不是太大的问题。
chendaiyin 2002-11-25
  • 打赏
  • 举报
回复
听说TR@SOE是IB的老大,所以我才来这个版的哦,你可要帮我啊,
chendaiyin 2002-11-25
  • 打赏
  • 举报
回复
那可真不方便了,如那些自定义的数据类型那不是每次用又要定义一遍,比如boolean型IB中是没有的,那不是每次又要写一段,有没有什么办法解决?

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧