用COM自动服务扩展SQL Server功能
2007-05-15 09:32:50 来源:WEB开发网sp_OASetProperty objecttoken, propertyname,newvalue [, index]
第一个参数objecttoken是由sp_OACreate返回的,参数Propertyname是要改变的对象的属性名字,Newvalue参数是想赋给属性的新变量,可以是一个变量或一个文字值。如果设定的属性值是作为一个集合的一个对象,可以使用可选的index参数来指定这个集合的一个特定的位置。下面的命令调用sp_OASetProperty把名字为FixedDecimalPlaces的属性设置为6:Exec sp_OASetProperty @Object, 'FixedDecimalPlaces', 6
可以用下面的语法调用sp_OAMethod存储过程执行一个对象的方法:
sp_OAMethod objecttoken, methodname [, returnvalue OUTPUT] [,
Sp_OAMethod是最灵活的,因而也是最复杂的自动操作存储过程,我们甚至可以用它象调用一个方法那样调用一个属性,而且还能得到一个返回值,当然,我们也能使用sp_OAGetProperty来完成这一任务。该存储过程的第一个参数objecttoken是由sp_OACreate返回的对象标记,参数methodname是希望执行的方法的名字,如果该方法有返回值,则下一个参数returnvalue应当是一个包含该方法返回值的适当类型的变量;如果返回值是一个一维或二维的数组,则用NULL作为一个占位符,该过程将返回一个结果集。该存储过程不能返回一个超过二维的数组作为结果集合,在这种情况下,SQL Server就会出错。如果该方法没有返回类型。
如果调用的方法需要参数,就需要在调用sp_OAMethod时提供这些参数。如果方法允许按顺序提供参数,则按要求的顺序列出每个参数,并用逗号分隔每个参数,还可以用变量或文字变量作为参数。如果需要使用有名参数,SQL Server也提供了相应的机制,只需使用:@变量名=变量值 的形式列出所需的变量即可。需要注意的是不要因为有@前缀而把变量名当作局部变量,当调用存储过程sp_OAMethod时,SQL Server就会解析出@,因此,即使在调用的方法中有名字为HostName的参数时,仍然可以使用名字为@HostName的局部变量。
赞助商链接