SELECT col1,
col2,
col3,
EXEC GetAIntFromStoredProc(T.col1) AS col4
FROM Tbl AS T
WHERE (col2 = @parm)
このSQLクエリをSQL Server 2008に書き込む方法はありますか。選択クエリ内のストアドプロシージャを実行する方法
SELECT col1,
col2,
col3,
EXEC GetAIntFromStoredProc(T.col1) AS col4
FROM Tbl AS T
WHERE (col2 = @parm)
このSQLクエリをSQL Server 2008に書き込む方法はありますか。選択クエリ内のストアドプロシージャを実行する方法
感謝を@twoleggedhorse。
ここに解決策があります。
まず、私たちはその後、私たちは選択クエリ
Select col1, col2, col3,
GetAIntFromStoredProc(T.col1) As col4
From Tbl as T
Where [email protected]
ストアドプロシージャでINSERTステートメントまたはUPDATEステートメントを実行していない限り、おそらくそれを関数にしたいと思うでしょう。
ストアドプロシージャは、外部プログラムまたは時間間隔で実行するためのものです。
ここでの答えは、それがより良い私ができるよりも説明します:
ストアドプロシージャは「外部プログラムで実行するために、または時間間隔で実行する」ために使用できますが、その目的のためにのみ意図されています。スクリプトは、データ操作のためのオンデマンドコンテキストで独立して実行されるように常に書き込まれています。 – BuvinJ
機能が選択ループ内で呼び出すのは簡単ですけど、彼らはドン
CREATE FUNCTION GetAIntFromStoredProc(@parm Nvarchar(50)) RETURNS INTEGER
AS
BEGIN
DECLARE @id INTEGER
set @id= (select TOP(1) id From tbl where [email protected])
RETURN @id
END
機能を作成しました挿入、更新、削除などを実行できます。これらは、クエリ操作にのみ役立ちます。データを操作するには、ストアドプロシージャが必要です。
この質問に対する真の答えは、「カーソル」を介してselect文の結果を繰り返し、そのループ内からプロシージャを呼び出す必要があるということです。ここでは例です:@@FETCH_STATUS
があなたのために更新され、標準的な変数であることを
DECLARE @myId int;
DECLARE @myName nvarchar(60);
DECLARE myCursor CURSOR FORWARD_ONLY FOR
SELECT Id, Name FROM SomeTable;
OPEN myCursor;
FETCH NEXT FROM myCursor INTO @myId, @myName;
WHILE @@FETCH_STATUS = 0 BEGIN
EXECUTE dbo.myCustomProcedure @myId, @myName;
FETCH NEXT FROM myCursor INTO @myId, @myName;
END;
CLOSE myCursor;
DEALLOCATE myCursor;
注意。残りのオブジェクト名はカスタムです。
関数を見ると、選択クエリ内からストアドプロシージャを呼び出すことはできません。 – twoleggedhorse
EXC GetAIntFromStoredProc(t.col1)をcol4として選択 FROM tblとして ここで(col2 = @parm)はEXEC MyStoredProc 'param1'、 'param2'からcol1、col2を選択しません。これは重複した試し編集ではありませんが、拒否されました。このポストの回答は正しいです – DooMMcQ