sql - 获取 CREATE FUNCTION 必须是批处理中的唯一语句 - SQLServer
问题描述
在以下查询中,我得到“必须是批处理中的唯一语句”错误
CREATE FUNCTION IsManager
(@EnteredEmployeeID DECIMAL(11,0))
RETURNS FLOAT
AS
BEGIN
DECLARE @Ret DECIMAL;
SELECT @Ret = ManagerID
FROM Manager
WHERE ManagerID = EnteredEmployeeID;
IF(@Ret>0)
RETURN 0.03
ELSE
RETURN 0.02
END
一些建议是删除输入变量的 @ 符号,这会导致另一个错误,因为它需要一个变量。
请让我知道此查询有什么问题,并在此先感谢您
解决方案
CREATE FUNCTION IsManager(@EnteredEmployeeID DECIMAL(11,0))
RETURNS FLOAT
AS
BEGIN
DECLARE @Ret DECIMAL, @result FLOAT;
SELECT @Ret = ManagerID
FROM Manager
WHERE ManagerID = @EnteredEmployeeID;
IF(@Ret>0)
set @result = 0.03
ELSE
set @result = 0.02
return @result
END
我建立了一些东西:
您正在从表中选择数据,并且在 where 子句中,您需要使用在调用她时已转发给函数的变量。所以代替这个:
WHERE ManagerID = EnteredEmployeeID;
这个:
WHERE ManagerID = @EnteredEmployeeID;
您必须将值设置为某个变量,然后在最后使用 return 语句返回它......所以而不是这个:
IF(@Ret>0) RETURN 0.03 ELSE RETURN 0.02
这个:
IF(@Ret>0) set @result = 0.03 ELSE set @result = 0.02 return @result
我做了更多的研究,这就是为什么我问你“你如何运行这个语句?你只是想运行这个创建函数语句吗?”。请确认这不是您的情况:
正如错误消息所示,CREATE FUNCTION 语句必须是查询批处理中的第一条语句。在 CREATION FUNCTION 语句之前不应有其他语句使其不是查询批处理中的第一条语句。
如果是,那么就在语句之间添加关键字 GO。
这是一个很好的解释:
http://www.sql-server-helper.com/error-messages/msg-111-create-function.aspx
推荐阅读
- c++ - 定义 C++ 移动构造函数和移动赋值运算符
- python - Python Openzwave Raspberry Pi 设备未准备好
- database - 创建和对象添加成员过程和函数 - ORACLE-
- spring-boot - 测试 Apache Camel + SpringBoot 时使用备用端点
- android - Kotlin 相当于 Swift 的 defer 关键字
- thymeleaf - Thymeleaf - 虽然循环 - 如果找到值则设置一个变量
- omnet++ - 如何从代码中停止模拟?
- python - 如何找到所有支持的 python、reStructuredText 字段名?
- node.js - 删除功能删除错误的项目
- html - 链接根本不起作用/不可点击