データベースにテーブルがほとんどなく、これらのテーブルのデータを格納するためにスカラーカーソルとテーブル変数を使用するAppoitmentIDに基づいて、 AppoitmentIDに基づいています。カーソルの終わりの後、カーソルの動的クエリを使用してデータを挿入したテーブル変数の行を数えます。カーソルを使用して必要なテーブルからすべての行を数えます
しかし、それは次のようなエラー
は、テーブル変数を宣言する必要があり、私を与える「@ProcCount」。
必要なテーブルからすべての行の数を取得する他の方法はありますか。 以下は私のコードです
Create FUNCTION [dbo].[ufn_GetProcedureCount]
(
)
RETURNS INT
AS
BEGIN
-- Declare the return variable here
DECLARE @MenuID bigINT, @TableName VARCHAR(150);
DECLARE @Result int
DECLARE @ProcCount TABLE (AppID INT, WoundId bigINT,TableName varchar(150));
DECLARE @sql nvarchar(2000)
DECLARE @Count int
DECLARE Cur_PendSign Cursor For
select Distinct MenuID,TableName from AppointmentTypeRequiredDocumnet A inner join Menu M on M.ID =A.MenuID where m.MenuGroupID = 8
OPEN Cur_PendSign
FETCH Cur_PendSign INTO @MenuID, @TableName
WHILE @@FETCH_STATUS=0
BEGIN
SET @sql='DECLARE @ProcCount TABLE (AppID INT, WoundId bigINT,TableName varchar(150))'
SET @[email protected]+'INSERT INTO @ProcCount (AppID,WoundId)
SELECT TOP 1 V.AppointmentID, 1
FROM ['[email protected]+'] V WITH(NOLOCK)'
set @[email protected]+ 'select count(*) from @ProcCount;'
--set @[email protected]+ 'DECLARE @Count int'
EXECUTE sp_executesql @sql
FETCH Cur_PendSign INTO @MenuID, @TableName
END
CLOSE Cur_PendSign
DEALLOCATE Cur_PendSign
--set @Result = select count(*) from @ProcCount
RETURN @Result
END
が含まれているものを確認したい場合は、あなたがカーソルを必要とし、あなただけの加入で必要なものを達成することはできませんか?原因カーソルがパフォーマンスを低下させる – Pream
@Pream、私は私のストアプロシージャで戻り値を使用するので、カーソルが必要です。 – Hitesh
動的コード挿入から「TOP 1」のみを選択しています。すると、カーソルに表示されるテーブルの数は、その数だけです。そうじゃない? –