1

クエリで自分の sp を呼び出したいのですが、2 つのエラーがあります。

Msg 156, Level 15, State 1, Line 17
Incorrect syntax near the keyword 'EXEC'.

Msg 156, Level 15, State 1, Line 19
Incorrect syntax near the keyword 'AS'.

これが私のクエリです:

    SELECT O.OrderId
  ,O.Number
  ,O.Creation
  ,(SELECT Name + ' ' + Surname FROM [User] WHERE UserId = (SELECT CreatedBy FROM [User] WHERE UserId = O.UserId) ) AS OrderOwner
  ,(SELECT Name + ' ' + Surname FROM [User] WHERE UserId = O.UserId )AS Customer
  ,(SELECT Telephone1 FROM [User]  WHERE UserId =  O.UserId) AS Telephone
  ,(SELECT CASE IsActive WHEN 1 THEN 'Indirimli' WHEN 0 THEN 'Indirimsiz' END AS Indirim FROM [User] WHERE UserId = O.UserId) AS Discount
  ,(SELECT CASE IsActive
     WHEN 0
     THEN 

         (SELECT SUM(Price) FROM Product WHERE ProductId IN( SELECT ProductId FROM OrderProduct WHERE OrderId = O.OrderId )) 
    WHEN 1
    THEN
    EXEC USP_CalculatePrice 70

    END AS Price
   FROM [User] WHERE UserId = O.UserID) AS Price

  ,O.Description
  ,O.Status 
  FROM
  [Order] AS O
  WHERE O.Status = 0

何か提案はありますか?

4

1 に答える 1

9

select既存のステートメント内でストアド プロシージャを呼び出すことはできません。必要なのは、ユーザー定義のスカラー関数です(テーブル関数や組み込み関数とは対照的に)。

実際に何をしようとしているのかによっては、ユーザー定義のテーブル関数が適用される可能性があります。その場合、テーブルを返す関数を作成し、それに参加できます。ビューに少し似ていますが、パラメーターを受け入れます。

于 2012-08-07T19:44:34.617 に答える