自定义函数出错,请兄弟们帮我看看

fyming 2006-01-18 04:34:23
CREATE FUNCTION cus_f_IsUsed
(
@lngID int=0,
@v int=0
)

RETURNS bit

AS

BEGIN

declare
@sql nvarchar(1000),
@IsUsed bit,
@Fields1 nvarchar(30),
@ID int

--字段名1变量(ID)
set @Fields1=case when @v=1800 then N'lngProvinceID'--省份
when @v=2000 then N'lngCityID'--城市
when @v=2200 then N'lngSepcialtyID'--专业
when @v=2400 then N'lngNationID'--民族
when @v=2600 then N'lngDiplomaID'--学历
when @v=2800 then N'lngWorkTypeID'--工种
when @v=3000 then N'lngProcessID'--工序
when @v=3200 then N'lngWorkPositionID'--工位
when @v=3400 then N'lngEmployeeTypeID'--员工类别
when @v=3600 then N'lngEmployeeQualityID'--员工性质
when @v=3800 then N'lngDutyID'--职务
when @v=4000 then N'lngTitleID'--职称
when @v=4200 then N'lngCusTypeID'--客户类别
when @v=4400 then N'lngCusGrpID'--客户组别
when @v=4600 then N'lngCusPropertyID'--企业性质
when @v=4800 then N'lngCusTradeID'--行业
end

set @IsUsed=0

--employee
if @v<>5000
begin
set @sql=N'select @F='+@Fields1+N' from employee where ' +@Fields1+N'=@ID'
exec sp_executesql @sql,
N'@F int out,@ID int',@ID out,@lngID
if @ID is not null
begin
set @IsUsed=1
goto aa
end
end

aa:
return @IsUsed
____________________________________________________________________

在查询分析器里执行
'select dbo.cus_f_IsUsed (3,1800)',
提示'服务器: 消息 557,级别 16,状态 2,过程 cus_f_IsUsed,行 44
只有函数和扩展存储过程才能从函数内部执行。'

什么意思?
...全文
93 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zlp321002 2006-01-18
  • 打赏
  • 举报
回复
函数不能用动态SQL,改存储过程方式!!
fyming 2006-01-18
  • 打赏
  • 举报
回复
我测试过,只是在执行到
exec sp_executesql @sql,
N'@F int out,@ID int',@ID out,@lngID
这一句时才出错,那么错误提示中的"只有函数和扩展存储过程才能从函数内部执行"是什么意思?
尚和空四 2006-01-18
  • 打赏
  • 举报
回复


给你个例子看看吧。





CREATE FUNCTION dbo.func_getdate
(@date datetime)
RETURNS varchar(10)
AS
BEGIN
declare @y varchar(4)
declare @m varchar(2)
declare @d varchar(2)
declare @dt varchar(10)

set @y = convert(varchar(4),year(@date))
set @m = convert(varchar(2),month(@date))
set @d = convert(varchar(2),day(@date))
set @dt = @m + '/' + @d + '/' + @y
if @dt = '1/1/1900'
set @dt = ''
if @dt = '01/01/1900'
set @dt = ''
if @dt = '12/31/9999'
set @dt = ''
return @dt
END








本实践项目深入研究了基于C#编程环境与Halcon图像处理工具包的条码检测技术实现。该原型系统具备静态图像解析与动态视频分析双重功能,通过具体案例展示了人工智能技术在自动化数据采集领域的集成方案。 C#作为微软研发的面向对象编程语言,在Windows生态系统中占据重要地位。其语法体系清晰规范,配合.NET框架提供的完备类库支持,能够有效构建各类企业级应用解决方案。在计算机视觉技术体系中,条码识别作为关键分支,通过机器自动解析商品编码信息,为仓储管理、物流追踪等业务场景提供技术支持。 Halcon工具包集成了工业级图像处理算法,其条码识别模块支持EAN-13、Code128、QR码等多种国际标准格式。通过合理配置检测算子参数,可在C#环境中实现高精度条码定位与解码功能。项目同时引入AForge.NET开源框架的视频处理组件,其中Video.DirectShow模块实现了对摄像设备的直接访问控制。 系统架构包含以下核心模块: 1. Halcon接口封装层:完成图像处理功能的跨平台调用 2. 视频采集模块:基于AForge框架实现实时视频流获取 3. 静态图像分析单元:处理预存图像文件的条码识别 4. 动态视频解析单元:实现实时视频流的连续帧分析 5. 主控程序:协调各模块工作流程 系统运行时可选择图像文件输入或实时视频采集两种工作模式。识别过程中将自动标注检测区域,并输出解码后的标准条码数据。该技术方案为零售业自动化管理、智能仓储系统等应用场景提供了可靠的技术实现路径,对拓展计算机视觉技术的实际应用具有重要参考价值。 资源来源于网络分享,仅用于学习交流使用,勿用于商业,如有侵权联系我删除!
Java内存泄漏发现技术研究.pdf内容概要:本文围绕Java内存泄漏的发现技术展开研究,针对现有研究多集中于泄漏发生后的诊断与修复,而缺乏对泄漏现象早期发现方法的不足,提出了一套结合动态与静态分析的综合解决方案。动态方面,设计了一种面向泄漏的单元测试生成方法,通过识别高风险泄漏模块并生成具有泄漏检测能力的单元测试,实现早期泄漏发现;静态方面,提出基于模式的检测方法,重点识别因错误使用WeakHashMap等弱引用结构导致的内存泄漏,通过静态扫描源代码提前发现潜在缺陷。系统基于JUnit、CodePro Analytix和Soot等工具实现,实验验证了其在JDK等开源项目中发现已知泄漏缺陷的能力。; 适合人群:具备一定Java编程基础,从事软件开发、测试或质量保障工作1-3年的研发人员,以及对程序分析、内存管理感兴趣的研究生或技术人员。; 使用场景及目标:①助开发者在编码和测试阶段主动发现潜在内存泄漏,提升软件健壮性;②为构建自动化内存泄漏检测工具链提供理论与实践参考;③深入理解Java内存泄漏的常见模式(如WeakHashMap误用)及对应的动态测试生成与静态分析技术。; 阅读建议:建议结合Soot、JUnit等工具的实际操作进行学习,重点关注第三章和第四章提出的三类泄漏模块识别算法与基于模式的静态检测流程,并通过复现实验加深对溢出分析、指向分析等底层技术的理解。

34,874

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧