通过变量表返回记录集为什么不可以呢

yetty_fjf 2003-04-07 03:39:21
CREATE PROCEDURE [Test_Production] (@CompanyId varchar(20),@WorkDateFrom datetime,@WorkDateTo datetime,@Results varchar(200) out)
AS

declare @Product table (WorkDate datetime,TypeName varchar(200),Amount float)

insert into @Product(WorkDate,TypeName,Amount) select WorkDate,TypeName,Amount from v_Production where CompanyId=@CompanyId and WorkDate>=@WorkDateFrom and workDate<=@WorkDateTo
----1
select * from @Product
----2
-- select * from v_Production

上述存储过程中如果用1即变量表来返回记录集,提示说记录集关闭
只有用2即物理表查询返回记录集才没问题

哪位高人指点一下
...全文
144 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yetty_fjf 2003-04-07
  • 打赏
  • 举报
回复
我明白了
wuqiuzhi(孜孜):你说的对,变量表是局部变量,所以无法传到
客户端
大力则提供了一种间接传递的方法
谢谢
yetty_fjf 2003-04-07
  • 打赏
  • 举报
回复
大力:好像通过函数没有办法直接返回记录集到客户端把


wuqiuzhi(孜孜):是在内部,我是想把变量表记录集返回给客户端
pengdali 2003-04-07
  • 打赏
  • 举报
回复
返回 table 数据类型的用户定义函数
返回 table 的用户定义函数可以是替代视图的强大方式。返回 table 的用户定义函数可用在 Transact-SQL 查询中允许表或视图表达式的地方。视图限制于单个 SELECT 语句,而用户定义函数可包含允许比视图中具有的逻辑功能更强大的附加语句。

返回 table 的用户定义函数还可替换返回单个结果集的存储过程。可在 Transact-SQL 语句的 FROM 子句中引用由用户定义函数返回的 table,而返回结果集的存储过程却不能。例如,假设 fn_EmployeesInDept 是返回 table 的用户定义函数并可由 SELECT 语句唤醒调用,如下所示:

SELECT * FROM tb_Employees AS E INNER JOIN
dbo.fn_EmployeesInDept('shipping') AS EID
ON E.EmployeeID = EID.EmployeeID

在返回 table 的用户定义函数中:

RETURNS 子句为函数返回的表定义局部返回变量名。RETURNS 子句还定义表的格式。局部返回变量名的作用域位于函数内。


函数主体中的 Transact-SQL 语句生成行并将其插入 RETURNS 子句所定义的返回变量。


当执行 RETURN 语句时,插入变量的行以函数的表格格式输出形式返回。RETURN 语句不能有参数。
函数中返回 table 的 Transact-SQL 语句不能直接将结果集返回用户。函数返回用户的唯一信息是由该函数返回的 table。

下例在 Northwind 数据库中创建一个返回 table 的函数:

CREATE FUNCTION LargeOrderShippers ( @FreightParm money )
RETURNS @OrderShipperTab TABLE
(
ShipperID int,
ShipperName nvarchar(80),
OrderID int,
ShippedDate datetime,
Freight money
)
AS
BEGIN
INSERT @OrderShipperTab
SELECT S.ShipperID, S.CompanyName,
O.OrderID, O.ShippedDate, O.Freight
FROM Shippers AS S INNER JOIN Orders AS O
ON S.ShipperID = O.ShipVia
WHERE O.Freight > @FreightParm
RETURN
END

在这个函数中,返回的本地变量名是 @OrderShipperTab。函数主体中的语句将行插入变量 @OrderShipperTab,以生成该函数返回的表结果。

下面的查询在其 FROM 子句中引用函数返回的表:

SELECT *
FROM LargeOrderShippers( $500 )
wuqiuzhi 2003-04-07
  • 打赏
  • 举报
回复
你的那两个查询是不是在存储过程外面哦,如果是外面就是正确的,因为变量在其外会自动被清除。
如果在存储过程内部,就不清楚原因是什么了。
源码下载地址: https://pan.quark.cn/s/a4b39357ea24 Altium Designer 18是一款功能丰富的电子设计自动化工具,其集成了电路原理图绘制、PCB布局规划、三维视图展示、电路仿真分析以及生产文件生成等多项核心功能,为电子工程师们提供了一个全面的硬件设计解决方案。该软件的官方中文指导材料系统地阐述了从项目初始阶段到最终完成的全过程操作方法。 在“AD18 官方中文指导材料”中,使用者可以掌握以下核心内容要点: 1. **系统配置与界面认知**:熟悉Altium Designer 18的工作平台,涵盖菜单选项、工具栏配置、工作区域安排,以及个性化工作界面的设定方法。 2. **项目创建流程**:掌握如何建立新的项目工程,包括工程参数配置、项目模板选取,以及项目文件的添加操作。 3. **电路图绘制技术**:学习电路原理图的绘制流程,包括元件库的维护管理、元件放置技巧、连接线路绘制、属性编辑操作,以及网络的自动生成方法。 4. **元件库构建与管理**:了解如何建立自定义元件库,执行元件的导入与导出任务,以及利用Altium Designer自带的元件资源库。 5. **PCB布局设计方法**:掌握PCB设计的基本准则,如元件布局策略、布线技巧、层叠结构调整、布线规则优化,以及冲突检测与短路处理技术。 6. **设计规范与约束条件**:理解设定设计规范和电气约束条件的关键性,包括间距参数设定、焊盘尺寸规格、过孔尺寸要求等,以及运用规则检查进行设计验证的流程。 7. **三维模型整合应用**:学习如何将三维模型与PCB设计内容相结合,以实现更为直观的机械配合验证。 8. **电路性能仿真技术**:掌握使用Altium Des...
源码链接: https://pan.quark.cn/s/a4b39357ea24 ### 接口测试知识要点说明 #### 一、接口测试的定义及分类 1. **概念阐释**: - 接口测试作为软件测试的关键环节,主要对系统之间的交互点进行验证。 - 它旨在核实接口的正确性、稳定性和功能性,保障各个系统组件能够依照预期执行交互操作。 2. **实施情境**: - 适用于多系统联合开发的环境。 - 适用于包含多个子系统的复杂应用系统开发过程。 3. **适用范围**: - 为其他系统提供支持的底层基础架构系统。 - 负责协调中心服务的系统架构。 4. **分类标准**: - **模块接口测试**:通常作为单元测试的一部分,适用于独立构建的功能模块。 - **Web接口测试**: - **服务端接口测试**:针对客户端与服务器端之间的接口进行验证。 - **外部接口测试**:对第三方提供的接口进行测试,例如支付平台提供的授权登录接口。 5. **测试角度**: - **接口功能验证**:核实接口功能是否满足预期要求。 - **接口性能评估**:衡量接口的处理能力及响应时间。 - **接口稳定性考察**:检测接口在长时间运行中的现情况。 - **接口安全检测**:确保接口能够抵御非法访问或数据篡改。 6. **测试手法**: - **参数细致测试**:深入测试接口的输入参数和输出结果。 - **场景模拟测试**:依据实际业务场景进行测试验证。 #### 二、接口测试的详细流程 1. **测试规划**: - 明确测试范围、目标及所需资源。 - 规划测试策略,选择适宜的工具和技术手段。 2. **测试用例设计**: - 依据需求文档和接口规格文档设计测试用例。 - 覆...

22,296

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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