`
Newhaven
  • 浏览: 61979 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SQL Server的存储过程或自定义函数调用Com组件

阅读更多

虽然MS SQl存储过程自带有加密的方法,但现在外面有很可软件可以解掉。
解决的方法是写DLL或OLE程序,然后在数据库中调用就行了,SQL的很多扩展存储过程就是用DLL


--SQL Server的存储过程调用Com组件


/*--下面的部分在VB中完成

首先我们先用VB 作一个最简单的组件

工程名称: testSQLCOM
类名: TestMath

'函数,计算两个整数相加的结果
Public Function AddMe(a As Long, b As Long) As Long
AddMe = a + b
End Function

编译生成后,我们就可以在 Sql Server 中对这个 Com 组件进行调用了
--*/


/*--下面是SQL中对上面DLL的调用--*/

--定义用到的变量
declare @err int,@src varchar(255),@desc varchar(255)
declare @obj int,@re int

--创建调用实例
exec @err=sp_OACreate 'testSQLCOM.TestMath', @obj out
if @err<>0 goto lberr --如果创建失败,则进行错误处理

--调用DLL中的函数
exec @err=sp_OAMethod @obj,'AddMe',@re out,100,200
if @err<>0 goto lberr --如果调用错误,则进行错误处理

print '返回的结果是:' + str(@re)

--完成后释放
exec sp_OADestroy @obj

return

lberr:
exec sp_oageterrorinfo 0,@src out,@desc out
select cast(@err as varbinary(4)) as 错误号
,@src as 错误源,@desc as 错误描述



下面这个是开发项目时朋友写的,以做参考:)
CREATE FUNCTION SMSFormatMsg (@s1 nvarchar(1000), @s2 nvarchar(1000))
RETURNS nvarchar(1000)
AS
BEGIN
DECLARE @object int
DECLARE @hr int
DECLARE @property varchar(255)
DECLARE @return varchar(255)
DECLARE @src varchar(255), @desc varchar(255)

-- 创建对象实例。
EXEC @hr = sp_OACreate 'SQLOLEProc.CbkSms', @object OUT
IF @hr <> 0
BEGIN
SELECT @return = 'error'
END

-- 调用对象方法。
EXEC @hr = sp_OAMethod @object, 'FormatMsg', @return OUT , @s1, @s2
IF @hr <> 0
BEGIN
SELECT @return = 'error'
END

-- 销毁对象实例。
EXEC @hr = sp_OADestroy @object
IF @hr <> 0
BEGIN
SELECT @return = 'error'
END
RETURN(@return)
END

 

@注:Original Letters

 

http://www.cnblogs.com/rolinson/archive/2005/02/26/109540.html

 

分享到:
评论

相关推荐

    SQL中使用正则替换的自定义函数

    1. 创建一个新的存储过程或函数,导入所需的CLR(Common Language Runtime)组件。 2. 定义函数接口,接受输入字符串、正则表达式模式和替换字符串作为参数。 3. 在函数体内,使用.NET Framework的`System.Text....

    sqlserver2005的base64加密解密函数

    在SQL Server 2005中,Base64编码是一种常用的数据编码方式,它将二进制数据转化为可打印的ASCII字符,常用于在网络上传输或存储非ASCII字符的数据。Base64编码能够确保数据在传输过程中不被篡改,因为它是通过特定...

    SqlServer自定义字符聚合

    描述中的“dll”文件通常是一个动态链接库,这可能是一个C#或VB.NET编写的.NET组件,包含了自定义聚合函数的实现。ReadMe.txt文件则会提供使用这个dll的详细步骤,包括如何注册到SQL Server,以及如何在查询中调用...

    Delphi有关SQL Server的存储过程解密源码.rar

    对于解密存储过程,可能需要创建自定义的ADO组件或扩展,这些组件能处理特定的解密逻辑。 5. **触发器和视图的处理**: 同样,Delphi程序也可以处理SQL Server中的触发器和视图。触发器是数据库级的事件响应程序,...

    在SQL2005/2008数据库中调用.NET组件中的函数方法例子程序

    4. 最后,你可以在SQL查询中直接调用创建的存储过程或函数,就像调用任何其他SQL Server内置函数一样。 通过这样的方式,你可以充分利用.NET Framework的强大功能,提高SQL Server的应用程序开发效率和灵活性。不过...

    Delphi SQL Server数据库备份程序_delphi_SQL_ServerDelphi_sqlserver_

    此外,为了提高效率和灵活性,你还可以将这些步骤封装到自定义的函数或类中,提供参数化接口,以适应不同数据库和备份需求。这可以让你在多个项目中重用代码,并实现更复杂的备份策略,比如定时备份、增量备份等。 ...

    sql server 2008 函数应用

    存储过程,作为SQL Server中的另一重要组件,是一组预先编译的T-SQL语句,可以接收输入参数,返回结果集或输出参数,甚至返回值。存储过程有以下优点: A. 组件式编程:存储过程可以复用,减少了代码重复,提高代码...

    sqlsever存储过程

    SQL Server存储过程是数据库管理系统中预编译的SQL语句集合,它允许开发人员封装一系列复杂的操作,并在需要时作为一个单元执行。存储过程是数据库设计和应用开发中的关键组件,可以提升性能、增强安全性并简化代码...

    microsoft system clr types for sql server 2012.7z

    3. **用户定义的函数和类型**:允许开发人员创建.NET框架内的自定义函数和数据类型,这些可以直接在T-SQL中调用。 4. **异步操作**:通过.NET的异步编程模型,可以实现数据库操作的非阻塞执行,提高应用程序性能。 ...

    sql server 应用与开发教程

    5. 存储过程和函数:编写和调用存储过程和用户自定义函数,提高代码复用性和性能。 三、数据库安全性 1. 用户与权限:创建数据库用户,分配登录权限,理解角色和权限的概念。 2. 数据库角色:使用内置角色(如db_...

    Professional SQL Server 2005 CLR Programming

    SQL Server 2005引入了对CLR的支持,允许开发者利用.NET Framework的强大功能来编写服务器端组件,如存储过程、函数、触发器等。 - **优势**:使用CLR编写这些组件可以提高开发效率,增强组件的功能性,并能够更好地...

    SQLServer与Oracle语法差异汇总.docx

    调用存储过程时,Oracle可以直接使用存储过程名并列出参数,而SQL Server则需要在调用前加上`EXEC`关键字,且输出参数需要使用`OUTPUT`或`OUT`关键字。 自定义函数方面,Oracle的函数格式与存储过程类似,但支持对...

    SQL Server2000设计与T-SQL编程

    《SQL Server 2000设计与T-SQL编程》这本书是针对数据库管理和开发人员的一份宝贵资源,尤其对于那些正在学习或已经使用Microsoft SQL Server 2000的读者来说,它提供了一套全面的知识体系。SQL Server作为一款强大...

    商业编程-源码-《在存储过程中调用外部的动态连接库(MS SQL Server7.0 2000环境)》配套源代码.zip

    本资源涉及的主题是“在存储过程中调用外部的动态连接库”,这是SQL Server扩展功能的一种高级应用,适用于那些需要在数据库层执行复杂计算或调用自定义功能的场景。以下是关于这一主题的详细解释。 首先,存储过程...

    hive数仓、hive SQL 、 hive自定义函数 、hive参数深入浅出

    本教程将深入探讨Hive数仓的架构与设计,Hive SQL的基本语法及高级特性,以及如何自定义函数以满足特定需求,并详细解析Hive的重要参数配置。 1. Hive数仓: - 数据仓库概念:数据仓库是为决策支持系统设计的,...

    SQL Server2005数据库经典必备基础教程

    SQL Server 2005是微软公司推出的一款关系型数据库管理系统,它提供了强大的数据存储、管理和分析能力。在这个经典必备的基础教程中,...学习存储过程的创建、调用和管理是深入理解SQL Server数据库系统的关键步骤。

    sql数据库存储过程

    存储过程可以返回一个整数值表示执行状态,但不同于函数,它们不能直接在表达式中使用,不能像函数那样被其他SQL语句直接调用。 在ASP或.NET环境中,存储过程同样可以被调用。在ASP中,可以通过ADODB.Connection...

    Beginning Microsoft SQL Server 2008 Programming.

    ##### 第9章:SQL Server存储和索引结构 本章深入分析了SQL Server中的存储机制和索引结构,这对于理解数据如何在物理层面上存储和检索至关重要。 ##### 第10章:视图 视图可以视为存储在数据库中的查询结果集,本...

    SQL server2012 教程

    - **存储过程**:编写和调用存储过程以执行复杂的数据库操作,提高代码复用性和效率。 ### 6. 索引与查询优化 - **索引类型**:了解B树索引、全文索引和空间索引的用途和创建方法。 - **查询优化器**:学习如何...

    SQL SERVER提示插件

    它集成了到Visual Studio或SQL Server Management Studio (SSMS)中,提供实时的SQL语法提示,帮助用户快速选择正确的表名、列名、函数和存储过程。此外,SQL Prompt还支持自定义代码片段,允许用户保存常用查询模板...

Global site tag (gtag.js) - Google Analytics