0

重複の可能性:
ストアドプロシージャから選択しますか?

T-SQL構文にストアドプロシージャを含めるにはどうすればよいですか?

select * from CITY_TABLE C where 
    COUNT_PEOPLE_PROCEDURE(C.ID) > 3
4

3 に答える 3

3

このようにストアドプロシージャをクエリに含めることはできません。

代わりに、スカラー関数を作成できます

create function COUNT_PEOPLE_FUNCTION
(
    @ID int
)
returns int
as
begin
    declare @Result int

    <... your code here ...>

    return @Result
end

その後

select * from CITY_TABLE C where COUNT_PEOPLE_FUNCTION(C.ID) > 3

ただし、実際には、スカラー関数が行ごとに個別に呼び出されるため、クエリが遅くなる可能性があります。

于 2012-11-22T17:26:37.277 に答える
1

コメントによると、オカレンスがn個あるレコードのみを取得する必要がある場合は、次のようなサブクエリを使用できます。

SELECT * FROM CITY_TABLE WHERE IDPerson IN (
    SELECT IDPerson FROM CITY_TABLE GROUP BY IDPerson HAVING COUNT(*) > 3
)

明らかに、正確な列名はわかりませんが、これがアイデアです。

于 2012-11-22T17:30:53.360 に答える
0

他の人がすでにそのようなストアドプロシージャを使用できないと言っているように、可能であれば関数を使用することをお勧めします。関数を使用できない場合(および使用できる場合でも)、このページを参考資料としてお勧めします。

ストアドプロシージャ間でデータを共有する方法

于 2012-11-22T17:29:02.907 に答える