2016-12-20 22 views
1

ストアドプロシージャ:ストアドプロシージャ - SQL Serverの2014

ALTER PROCEDURE EXPORT_SALES 
AS 
    -- insert invoice numbers into zInvoices table for use later 
BEGIN 
    SET NOCOUNT ON; 

    INSERT INTO zInvoices 
     SELECT 
      Orders.InvoiceNo 
     FROM 
      Orders 
     WHERE 
      (Orders.PostStatus = 2 
      AND Orders.VoidFlag = 0 
      AND Orders.LastModDate > Orders.ReplicationDateTime); 

    -- get recordset of data to return to view 
    SELECT NewId() AS IRN, CompanyName 
    FROM Companies; 
END 

ビュー:

ALTER VIEW mvuEXPORT_SALES 
AS 
    SELECT * 
    FROM openquery([local], 'SET FMTONLY OFF; SET NOCOUNT ON; EXEC DBName.user.EXPORT_SALES'); 
GO 

私は、ストアドプロシージャを実行すると、それはzInvoicesに挿入idとCompanyNameを持つレコードセットを返します。私がビューから実行すると、 IdおよびCompanyName ...を含むレコードセットを返しますが、zInvoicesテーブルには挿入されません。

ご意見をいただければ幸いです。

+1

ビュー定義のみが 'シングルSELECT'文を持つことができます。ビューのチェックMSDN内でプロシージャを実行することはできません。SQL Serverのビューには制限があります。 –

+0

ストアドプロシージャがレコードセットを返す限り、ビュー内でストアドプロシージャを実行できます。 – sgreen

答えて

0

が、これは何もリターンをご覧実行してみ:

SELECT Orders.InvoiceNo FROM Orders 
PostStatus = 2 
AND VoidFlag = 0 
AND LastModDate > ReplicationDateTime 
+0

何も返さない場合は、spにいくつかのレコードを挿入させる前に、まず挿入クエリを変更する必要があります。 – LONG

+0

Long - はいそれはレコードを返します...そしてビューはレコードを返します。 – sgreen