如何将存储过程的结果创建一个表?

fatminforever 2004-12-08 03:11:51
存储过程的最后是一个select语句,比如就一个语句:select * from table1 ,如何能够在执行这个存储过程之后将这个查询的结果创建一个表?
也就是类似给最后那个select加上into
不能修改原存储过程,可以认为存储过程是封装了的,只是知道名称和参数,异常的情况可以暂时不考虑,当然如果考虑更好,比如其实这个存储过程没有结果之类。
可能需要考虑mssql和oracle两种情况,能有一种也好
多谢多谢
...全文
273 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fatminforever 2004-12-09
  • 打赏
  • 举报
回复
我没试,不过openrowset似乎不行的样子啊,因为对象是存储过程的结果
lmj2003(雁不归) 的说法也有点不行,存储过程不执行表结构是不知道的,所以本来打算使用into这样的语法
lmj2003 2004-12-08
  • 打赏
  • 举报
回复
先建好表 table1
然后用INSERT INTO table1 EXEC 存储过程名称 参数
具体的你看看语法,我也有点不记得了
yingqing 2004-12-08
  • 打赏
  • 举报
回复
OPENROWSET
包括從 OLE DB 資料來源存取遠端資料需要的所有連線資訊。這個方法是在連結伺服器存取資料表的替代方法,而且是使用 OLE DB 連線與存取遠端資料的一次、特定的方法。OPENROWSET 函數可以在查詢的 FROM 子句中當作資料表名稱來參考。根據 OLE DB Provider 的能力,OPENROWSET 函數也可以當作 INSERT、UPDATE 或 DELETE 陳述式的目標資料表來參考。雖然查詢可能會傳回多個結果集,OPENROWSET 只傳回第一個結果集。

語法
OPENROWSET ( 'provider_name'
, { 'datasource' ; 'user_id' ; 'password'
| 'provider_string' }
, { [ catalog.] [ schema.] object
| 'query' }
)

引數
'provider_name'

代表登錄中指定的 OLE DB Provider 的親和名稱之字元字串。provider_name 沒有預設值。

'datasource'

是對應到特殊 OLE DB 資料來源的字串常數。datasource 是要傳送到提供者 IDBProperties 介面以初始化提供者的 DBPROP_INIT_DATASOURCE 屬性。一般而言,此字串包括資料庫檔案名稱、資料庫伺服器名稱或提供者了解並用以尋找資料庫的名稱。

'user_id'

是要傳送到指定的 OLE DB Provider 的使用者名稱字串常數。user_id 指定連線的安全性內容且以 DBPROP_AUTH_USERID 屬性傳送以初始化提供者。

'password'

是要傳送到 OLE DB Provider 的使用者密碼字串常數。初始化提供者時,password 以 DBPROP_AUTH_PASSWORD 屬性傳送。

'provider_string'

是以 DBPROP_INIT_PROVIDERSTRING 屬性傳送以初始化 OLE DB Provider 的特定提供者連線字串。provider_string 一般會包含所有初始化提供者時需要的所有連線資訊。

catalog

是有指定物件的資料庫目錄或資料庫名稱。

schema

是指定物件的結構描述或物件擁有者名稱。

object

唯一指定要操作的物件之物件名稱。

'query'

傳送到提供者並由提供者執行的字串常數。Microsoft® SQL Server™ 不處理此查詢,但處理由提供者傳回的查詢結果 (傳遞查詢)。傳遞查詢用在不經由資料表名稱而只經由命令語言顯露其表格資料的提供者時,非常有用。只要查詢提供者支援 OLE DB Command 物件及其強制介面,遠端伺服器就支援傳遞查詢。如需詳細資訊,請參閱 SQL Server OLE DB Programmer's Reference。

備註
如果 OLE DB Provider 支援指定的資料來源中的多個目錄與結構描述,就需要資料庫目錄與結構描述名稱。如果 OLE DB Provider 不支援,可以省略 catalog 與 schema 的值。

如果提供者只支援結構描述名稱,必須指定 schema.object 格式之兩個部份的名稱。如果提供者只支援資料庫目錄名稱,必須指定 catalog.schema.object 格式之三個部份的名稱。

OPENROWSET 不接受變數作為其引數。

yingqing 2004-12-08
  • 打赏
  • 举报
回复
USE pubs
GO
SELECT a.*
FROM OPENROWSET('MSDASQL',
'DRIVER={SQL Server};SERVER=seattle1;UID=sa;PWD=MyPass',
pubs.dbo.authors) AS a
ORDER BY a.au_lname, a.au_fname
GO
利用OPENROWSET函數可以做到

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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