sql-server - 在 sql server 中为 UDF 创建正文
问题描述
我正在尝试function
在我的sql server
数据库中创建一个
我写的:
CREATE FUNCTION CommandesAsTable ()
RETURNS TABLE
AS
DECLARE MyC CURSOR FOR SELECT ID,QTE,PRU FROM Commande
DECLARE @ID VARCHAR(50), @QTE INT , @PRU MONEY, @Total MONEY
DECLARE @R AS TABLE (ID VARCHAR(50), QTE INT , PRU MONEY, Total MONEY)
OPEN MyC
FETCH MyC INTO @ID,@QTE,@PRU
WHILE @@fetch_status =0
BEGIN
SET @total = @QTE*@PRU
INSERT INTO @R VALUES(@id,@QTE,@PRU,@Total)
FETCH MyC INTO @ID,@QTE,@PRU
END
CLOSE myc
DEALLOCATE myc
RETURN @R
但我收到了这个错误:
Msg 156, Level 15, State 1, Procedure CommandesAsTable, Line 5 [Batch Start Line 30]
Incorrect syntax near the keyword 'DECLARE'.
Msg 178, Level 15, State 1, Procedure CommandesAsTable, Line 25 [Batch Start Line 30]
A RETURN statement with a return value cannot be used in this context.
那么请我如何在我的函数中使用这个身体?并提前感谢
解决方案
做一个内联表函数而不是一个多语句(用一个光标引导),它会快得多:
CREATE FUNCTION CommandesAsTable()
RETURNS TABLE WITH SCHEMABINDING
AS RETURN
(
SELECT ID,QTE,PRU, Total = QTE * PRU
FROM Commande
)
GO
推荐阅读
- reactjs - 刀片视图未更新
- typescript - 在传递 this.result 进行测试时异步使用 Jasmine beforeEach
- angular - 我应该将我的管理页面包含到 Angular 项目中还是应该创建一个单独的项目?
- java - 是否有数据结构支持快速插入和中值计算?
- javascript - React.js Async await setState(),这是正确的方法吗?
- javascript - 使用 Javascript 将 URL 参数发送到 Python REST API
- excel - 如何使用 VBA 复制文本文件中列的内容
- macos - 为什么 Automator 不工作?!就像它失败了
- html - 仅使用 CSS 使第一列在反应表中保持粘性
- c++ - -std=c++14 在我的构建命令中 -std=c++11 之后,哪个获胜?