有关如何获取存储过程参数信息的问题向大家请教

mahongxi 2005-06-03 10:51:17
有关存储过程参数方向的问题向大家请教

在ORACLE和SQLSERVER中,都可以声明过程的某一个参数为输入输出值类型如
--ORACLE
P_ID in out integer
--SQLSERVER
@P_ID INT OUTPUT
但在使用ORACLE存储过程时,不需要显示的声明此参数是输入还是输出的.好像在
SQLSERVER下一定要这么做吧?

我刚刚在SQLSERVER环境下试验数据如下:
-----------------------------------------------
CREATE PROCEDURE PKG_TEST_TestOutput
@id int,
@os varchar(400) output,
@oi int output

AS


BEGIN
SET NOCOUNT ON
select @os, @oi
set @os = 'hello'
set @oi = 23
SET NOCOUNT OFF

END
-------------------------------------------------
--test 1.
declare @os varchar(4000)
declare @oi int
set @os = 'yes, no?'
set @oi = 987
exec PKG_TEST_TestOutput 6, @os, @oi /*注:ORACLE如此即可行*/
select @os, @oi

--result 1.
yes, no? 987
********************
yes, no? 987

-------------------------------------------------
--test 2.
declare @os varchar(4000)
declare @oi int
set @os = 'yes, no?'
set @oi = 987
exec PKG_TEST_TestOutput 6, @os OUT, @oi OUT
select @os, @oi
--result 2.
yes, no? 987
*******************
hello 23

我的问题是,在客户端用ADO编写程序时也一定要声明参数对象为pdInput or pdOutput吗?
我的试验结果是如果声明的类型与实际类型不致就会报错.

但是已有的程序代码本来是FOR ORACLE的,也就是说没有信息说明参数的输入输出方向(因为ORACLE会自动处理)
为了让这些代码在SQLSERVER下工作,我必须通过某种手段得到参数的方向.

大家有什么好的建议吗?
我能想到的是在启动时连接到SQLSERVER数据库取得存储过程(或函数)参数的信息
在ADO中, ICommandWithParameters.SetParameterInfo 是实现这个功能的,但由于种种原因我需要自己来完成查询,
各位能给点关于从数据库中取得某一个存储过程参数信息的方法吗(SQL,或是存储过程或是其它..)?

谢谢各位关注.




...全文
86 回复 打赏 收藏 举报
写回复
回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
相关推荐
发帖
MS-SQL Server
加入

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
申请成为版主
帖子事件
创建了帖子
2005-06-03 10:51
社区公告
暂无公告