函数中不能使用游标吗? 用动态sql语句生成游标需要执行exec命令,但是自定义函数中不支持exec命令,使用后则出错,这是什么原因? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 函数里面不能用exec。getdate(),以及update等等操作`` 函数中的有效语句的类型包括: DECLARE 语句,该语句可用于定义函数局部的数据变量和游标。为函数局部对象的赋值,如使用 SET 为标量和表局部变量赋值。游标操作,该操作引用在函数中声明、打开、关闭和释放的局部游标。不允许使用 FETCH 语句将数据返回到客户端。仅允许使用 FETCH 语句通过 INTO 子句给局部变量赋值。除 TRY...CATCH 语句之外的控制流语句。SELECT 语句,该语句包含具有为函数的局部变量赋值的表达式的选择列表。INSERT、UPDATE 和 DELETE 语句,这些语句修改函数的局部表变量。EXECUTE 语句,该语句调用扩展存储过程。 函数体内只有EXECUTE 语句调用扩展存储过程。游标支持 多谢各位老大的热心结实回答,看来只有使用扩展存储过程了,不晓得这个问题在sqlserver2005中解决了没有,我还没有做过扩展存储过程呢,:),难不难做啊? 扩展存储过程 好像用C++写DLL吧 首先用C语言做一个DLL文件,假设已经做好扩展存储过程的DLL文件为dbxp_skate.dll--首先要将dll文件(dbxp_skate.dll)拷贝到sql程序所在的binn目录,例如C:\Program Files\Microsoft SQL Server\MSSQL\Binn--安装扩展存储过程exec master..sp_addextendedproc 'xp_dbevent', 'dbxp_skate.dll'--调用扩展存储过程exec master..xp_dbevent 1,'a','b'--执行 sp_helpextendedproc 以显示当前由 SQL Server 装载的 DLL 文件。exec sp_helpextendedproc @funcname = 'xp_dbevent' --察看xp_dbevent所属的DLLexec sp_helpextendedproc --察看SQL Server 装载的 DLL 文件--卸载扩展存储过程exec master..sp_dropextendedproc 'xp_dbevent'--从内存中卸载指定的扩展存储过程动态链接库(dbxp_skate.dll)dbcc dbxp_skate(free) 天,这个太麻烦了,而且跟我的实现目的毫无用处,看来只能另找方法了,呜.......呜....... 这个问题在sqlserver2005中解决了没有没有 关于GETDATE()的转换 各位大哥救命呢,小弟有如下SQL问题请教教 乌龟帮个忙~,帮小弟看看这个问题~ 安装sql 2000的问题 ODBC如何连上SQL EXPRESS2005 多行间计算问题 这个SQL语句怎么做? 怎么把文本格式字段里的图像数据转换成图像格式的字段? 关于自定义函数使用列参数的问题(高手请进) 如何实现这个精确小计的显示功能 分页 ODBC 驱动程序不支持所需的属性,一般都是有什么原因引起的
为函数局部对象的赋值,如使用 SET 为标量和表局部变量赋值。
游标操作,该操作引用在函数中声明、打开、关闭和释放的局部游标。不允许使用 FETCH 语句将数据返回到客户端。仅允许使用 FETCH 语句通过 INTO 子句给局部变量赋值。
除 TRY...CATCH 语句之外的控制流语句。
SELECT 语句,该语句包含具有为函数的局部变量赋值的表达式的选择列表。
INSERT、UPDATE 和 DELETE 语句,这些语句修改函数的局部表变量。
EXECUTE 语句,该语句调用扩展存储过程。
游标支持
exec master..sp_addextendedproc 'xp_dbevent', 'dbxp_skate.dll'--调用扩展存储过程
exec master..xp_dbevent 1,'a','b'--执行 sp_helpextendedproc 以显示当前由 SQL Server 装载的 DLL 文件。
exec sp_helpextendedproc @funcname = 'xp_dbevent' --察看xp_dbevent所属的DLL
exec sp_helpextendedproc --察看SQL Server 装载的 DLL 文件--卸载扩展存储过程
exec master..sp_dropextendedproc 'xp_dbevent'--从内存中卸载指定的扩展存储过程动态链接库(dbxp_skate.dll)
dbcc dbxp_skate(free) 天,这个太麻烦了,而且跟我的实现目的毫无用处,看来只能另找方法了,呜.......呜.......