【发布时间】:2010-12-02 07:41:44
【问题描述】:
我有一个返回行的存储过程:
CREATE PROCEDURE MyProc
AS
BEGIN
SELECT * FROM MyTable
END
我的实际过程有点复杂,这就是为什么需要存储过程。
是否可以通过调用此过程来选择输出?
类似:
SELECT * FROM (EXEC MyProc) AS TEMP
我需要使用SELECT TOP X、ROW_NUMBER 和一个额外的WHERE 子句来分页我的数据,我并不想将这些值作为参数传递。
【问题讨论】:
-
我不确定您打算在这里做什么,因为当您执行该过程时,您正在取回行。您是否想在 SELECT 语句中执行该过程,以便将其绑定到可分页对象?
-
您不想将值作为参数传递是否有特殊原因?按照您建议的方式执行此操作有点效率低下 - 您将选择比您需要的更多的数据,然后不会全部使用。
-
如果有人想将 sp 输出插入到 TABLE 变量中,在你的 sp 中有很多列,请按
Ctrl+T将结果输出为文本,然后复制第一列行并删除多余的空格从那里,您将轻松获得列名。要返回网格输出,请按Ctrl+D -
注意所有进入这里的人: atm 下面只提供了大约三个答案:1. 使用函数(接受的答案),2. 使用表变量或临时表和
INSERTEXECiff your sproc isn't too complicated,3. cheat and useOPENQUERY。但是每个答案都重复了惊人的次数,其中许多都获得了惊人的赞成票数。你已经被警告过了。 ????
标签: sql sql-server sql-server-2005 stored-procedures