创建函数 SQL-Server 语法不正确
Posted
技术标签:
【中文标题】创建函数 SQL-Server 语法不正确【英文标题】:Create Function SQL-Server Incorrect syntax 【发布时间】:2019-04-05 11:22:05 【问题描述】:我是 SQL Sg 服务器的新手,我正在尝试使用 create 函数运行代码以将价格从美元转换为十进制。我得到以下标志
"不正确的语法:'Create Function' 必须是 批处理。
谁能指出我做错了什么?谢谢!
CREATE FUNCTION week3.ConvertToEuro ( @priceUSD decimal(5,2))
returns decimal (5,2)
begin
declare @PriceEuro decimal (5,2)
set @PriceEuro =(@priceUSD * .89)
return @PriceEuro
end
SELECT TOP (1000) [ProductName]
,[price]
,week3.ConvertToEuro(price) as PriceEuro
FROM [AA5100_edmistonml].[Week3].[productprice]
【问题讨论】:
除非您使用 SQL Server 2019(并使用内联标量功能),否则我建议您使用内联表值函数。标量函数可能很慢。 汇率可能会发生变化,因此最好将其设为参数(或从最新表中查询)。 @Larnu。 . .旁注SQL Server 2019
尚未发布。
@YogeshSharma 现在在 CTP 2.4 中,并且(预览版)已经公开提供了一段时间。当然,这就是为什么我说“除非你使用 2019”;很有可能它们不是(特别是因为 2.4 现在仅作为评估版本提供,而不是开发/表达)。
【参考方案1】:
这两个语句是不同的,你要么分开运行,要么放在GO
:
CREATE FUNCTION week3.ConvertToEuro ( @priceUSD decimal(5,2))
returns decimal (5,2)
begin
declare @PriceEuro decimal (5,2)
set @PriceEuro =(@priceUSD * .89)
return @PriceEuro
end
GO
SELECT TOP (1000) [ProductName], [price], week3.ConvertToEuro(price) as PriceEuro
FROM [AA5100_edmistonml].[Week3].[productprice];
【讨论】:
【参考方案2】:尝试如下
CREATE FUNCTION week3.ConvertToEuro ( @priceUSD decimal(5,2))
returns decimal (5,2)
as -- add this
begin
declare @PriceEuro decimal (5,2)
set @PriceEuro =(@priceUSD * .89)
return @PriceEuro
end
go -- add this
SELECT TOP (1000) [ProductName]
,[price]
,week3.ConvertToEuro(price) as PriceEuro
FROM [AA5100_edmistonml].[Week3].[productprice]
【讨论】:
嘿 Zaynul...恭喜您今天获得了 sql 金质徽章...这是一项了不起的成就,干杯!【参考方案3】:尝试创建as
语句并在语句之间添加go
CREATE FUNCTION week3.ConvertToEuro ( @priceUSD decimal(5,2))
returns decimal (5,2)
as
begin
declare @PriceEuro decimal (5,2)
set @PriceEuro =(@priceUSD * .89)
return @PriceEuro
end
go
SELECT TOP (1000) [ProductName]
,[price]
,week3.ConvertToEuro(price) as PriceEuro
FROM [AA5100_edmistonml].[Week3].[productprice]
【讨论】:
以上是关于创建函数 SQL-Server 语法不正确的主要内容,如果未能解决你的问题,请参考以下文章
SQL-Server:继续最后一个值而不是 NULL,分区不正确
从 MS SQL-Server 迁移数据库时出现 MYSQL Workbench“不正确的字符串值”错误