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

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,或是存储过程或是其它..)?

谢谢各位关注.




...全文
129 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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