如何将预定义的存储过程参数作为SQL Server中的变量传递

时间:2016-03-14 09:40:01

标签: sql-server-2008 stored-procedures

我在过去几天努力解决调用存储过程sp_oamethod的问题。

以下代码工作正常

declare @return int; 
exec @return = sp_oamethod @object,'open(hhtp://xyz.com/uid=abc&pwd=***)';

但是如果我想将用户ID作为变量传递,我不能:

declare @return int;
declare @uid varchar(10);set @uid='abc'

exec @return = sp_oamethod @object, 'open(hhtp://xyz.com/uid='+@uid+'&pwd=***)';

3 个答案:

答案 0 :(得分:0)

尝试在变量上使用CONVERT

'open(hhtp://xyz.com/uid='+CONVERT(varchar(10),@uid)+'&pwd=***)'

答案 1 :(得分:0)

定义另一个变量,在sp调用之前设置它。然后将其用作sp参数。像那样:

declare @return int;
declare @uid varchar(10);set @uid='abc'

declare @url varchar(100);
set @url = 'open(hhtp://xyz.com/uid='+@uid+'&pwd=***)'

exec @return = sp_oamethod @object,@url;

MSDN Passing Values into Parameters

答案 2 :(得分:0)

declare @nvarurl nvarchar(max);
set @nvarurl ='http://example.com?uid='+@uid+'pwd='+pwd+'

exec @return = sp_OAMethod @Object, 'open',NULL, 'get',@nvarurl,'false'

完成解决我的约束由mysel使用上面的snippset。 谢谢那些回复的人.. :)