有关如何获取存储过程参数信息的问题向大家请教
有关存储过程参数方向的问题向大家请教
在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,或是存储过程或是其它..)?
谢谢各位关注.