Table 数据类型能否作为存储过程参数? 数据库移植又一问题
大家好,在大家的帮助下小弟的数据库移植工作在三月份进展顺利,已经完成了2个工具的移植(Oracle->SQLSERVER).
现在又遇到了一点问题,是关于在客户端调用服务器的过程时传递一个数组(或叫Table总之是一些普通数据类型的集合)参数
在ORACLE中有一类参数是这样定义的:
type TTable is table of number index by binary_integer;
使用时
procedure TTT(ReceiverID in TTable) is
begin
if ReceiverID.count > 0 then
for I in ReceiverID.FIRST .. ReceiverID.LAST loop
if ReceiverID(I) = 4 then
//具体业务.。。。。。。
end if;
end loop;
end if;
end;
在移植到SQLSERVER过程中,工具自动帮我把参数ReceiverID 转成了 Table(A INT) 这个数据类型,但编译却通过不了,我知道可以在函数返回值中用TABLE类型,但是不是SQLSERVER中不允许TABLE类型作为输入输出参数呢?
如果可以,请问在客户端用ADO如何使用?
如果不可以,有没有什么其它方式实现类似功能?我想到一招就是传一个逗号分开的字符串"12,34,45,67,78.."
然后在数据库中提供一些操作这些字串的函数,比如一个把这种字串转成TABLE的函数啊,然后再使用这个TABLE,但这又有一个问题,可能多次用到这个TABLE,如果保存这个函数返回的TABLE结果(好像不能用别一个@TABLE=FUNCTION...吧,也许临时表可以)。
各位费心了.
另外,小弟在近期工作中对ORACLE程序(DOA数据访问)……>SQLSERVER移植积累了一点心得,愿与各位讨论.