SQL存储过程中调用COM组件
2009-12-10 16:51
169 查看
出于SQL Server本身的功能不足,我们需要用外部的程序来实现,而Com由于其语言的无关性和强大的功能就成为与Sql Server接口的首选,并且sql Server本身也提供了这方面的系统存储过程用以实现与com的接口。这几个相关的系统存储过程为:
sp_OACreate 在 Microsoft® SQL Server™ 执行个体建立 OLE 对象的执行个体。
sp_OAMethod 呼叫 OLE 对象的方法
sp_OAGetProperty 取得 OLE 对象的属性值
sp_OASetProperty 将 OLE 对象属性设定为新值。
sp_OAGetErrorInfo 获得 OLE Automation 错误信息
sp_OAStop 停止整个服务器 OLE Automation 预存程序执行环境。
sp_OADestroy 销毁建立的 OLE 对象。
这是一个 Transact-SQL 语句批处理示例,它使用 OLE 自动化存储过程创建和使用 SQL-DMO SQLServer 对象。该代码的一些部分被用作存储过程引用示例。
DECLARE @object int
DECLARE @hr int
DECLARE @property varchar(255)
DECLARE @return varchar(255)
DECLARE @src varchar(255), @desc varchar(255)
-- Create an object.
EXEC @hr = sp_OACreate 'SQLDMO.SQLServer', @object OUT
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
-- Set a property.
EXEC @hr = sp_OASetProperty @object, 'HostName', 'Gizmo'
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
-- Get a property using an output parameter.
EXEC @hr = sp_OAGetProperty @object, 'HostName', @property OUT
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
PRINT @property
-- Get a property using a result set.
EXEC @hr = sp_OAGetProperty @object, 'HostName'
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
-- Get a property by calling the method.
EXEC @hr = sp_OAMethod @object, 'HostName', @property OUT
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
PRINT @property
-- Call a method.
EXEC @hr = sp_OAMethod @object, 'Connect', NULL, 'my_server', 'my_login', 'my_password'
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
-- Call a method that returns a value.
EXEC @hr = sp_OAMethod @object, 'VerifyConnection', @return OUT
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
PRINT @return
-- Destroy the object.
EXEC @hr = sp_OADestroy @object
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
sp_OACreate 在 Microsoft® SQL Server™ 执行个体建立 OLE 对象的执行个体。
sp_OAMethod 呼叫 OLE 对象的方法
sp_OAGetProperty 取得 OLE 对象的属性值
sp_OASetProperty 将 OLE 对象属性设定为新值。
sp_OAGetErrorInfo 获得 OLE Automation 错误信息
sp_OAStop 停止整个服务器 OLE Automation 预存程序执行环境。
sp_OADestroy 销毁建立的 OLE 对象。
这是一个 Transact-SQL 语句批处理示例,它使用 OLE 自动化存储过程创建和使用 SQL-DMO SQLServer 对象。该代码的一些部分被用作存储过程引用示例。
DECLARE @object int
DECLARE @hr int
DECLARE @property varchar(255)
DECLARE @return varchar(255)
DECLARE @src varchar(255), @desc varchar(255)
-- Create an object.
EXEC @hr = sp_OACreate 'SQLDMO.SQLServer', @object OUT
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
-- Set a property.
EXEC @hr = sp_OASetProperty @object, 'HostName', 'Gizmo'
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
-- Get a property using an output parameter.
EXEC @hr = sp_OAGetProperty @object, 'HostName', @property OUT
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
PRINT @property
-- Get a property using a result set.
EXEC @hr = sp_OAGetProperty @object, 'HostName'
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
-- Get a property by calling the method.
EXEC @hr = sp_OAMethod @object, 'HostName', @property OUT
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
PRINT @property
-- Call a method.
EXEC @hr = sp_OAMethod @object, 'Connect', NULL, 'my_server', 'my_login', 'my_password'
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
-- Call a method that returns a value.
EXEC @hr = sp_OAMethod @object, 'VerifyConnection', @return OUT
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
PRINT @return
-- Destroy the object.
EXEC @hr = sp_OADestroy @object
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
相关文章推荐
- SQL存储过程游标调用存储过程示例
- JAVA调用SQL存储过程详解
- C#中调用SQL存储过程
- Java调用SQL存储过程 输入输出参数
- SQL存储过程调用作业的方法
- .NET调用osql.exe执行sql脚本创建表和存储过程
- oracle 调用动态存储过程,动态sql
- 简单C# 与SQL存储过程调用
- ASP.NET调用sql存储过程使用GridView显示
- 如何调用存储过程,有返回值的,有参数的,存储过程中调用存储过程。(MS SQL Server)
- sql调用存储过程传入数组方法
- 用XML和SQL 2000来管理存储过程调用
- EF4.0 调用 SQL存储过程
- 数组、二维数组、及类型,存储过程调用.sql
- C# asp.net SQL存储过程写法Insert 插入语句,及其在asp.net中的调用方法
- SQL-server中编写存储过程及其调用
- SQL调用系统存储过程整理
- C#调用SQL存储过程完整例子
- sql 存储过程 几个 简单例子,及在asp.net(C#)中调用存储过程的代码
- C# 调用SQL的存储过程的接口及实现