用于打开文件的 SQL 用户定义函数

Posted

技术标签:

【中文标题】用于打开文件的 SQL 用户定义函数【英文标题】:SQL Userdefined function to open files 【发布时间】:2013-10-15 14:57:55 【问题描述】:

我想创建一个用户定义的函数/存储过程或其他 SQL 机制,当传递一个文件名时,它会将文件内容读入一个变量以供以后处理。该机制必须在事务中工作。

我的计划是使用用户定义的函数,但是 OPENROWSET 函数不允许我将变量作为文件名传递,因此我需要在“sp_executesql”语句中执行它,并且该函数变得不确定。

我可以使用任何变通方法来绕过非确定性函数吗?

【问题讨论】:

那个文件名在哪里?是在客户端还是在 SQL 服务器上? 【参考方案1】:

是的,您可以使用 SQL Server 从开发人员提供的 DLL 调用的所谓“CLR 函数”函数。详情见http://technet.microsoft.com/en-us/library/ms189876.aspx

但请注意,从服务器端处理文件不是具有重大安全问题的可扩展解决方案。

【讨论】:

【参考方案2】:

CLR 选项将为您提供所需的一切(请参阅@Dewfy 的 cmets),但如果您的数据允许,另一种选择是执行 bulk insert。它也不是可扩展的,多个用户同时执行此操作的问题,但也许您的情况允许这样做??

【讨论】:

以上是关于用于打开文件的 SQL 用户定义函数的主要内容,如果未能解决你的问题,请参考以下文章

创建用户定义类的实例并打开文件后 memset 出现问题

如何用C语言读写文件

Oracle用户无法打开SQL文件!提示:SP2-0310: 无法打开文件 "skeleton.sql"

open函数(待补充)

wpf文件用啥打开?

Python3 open() 函数-用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。