-1

「類似レコード」の検索結果を返すストアド プロシージャを作成したいと考えています。私が現在持っているストアドプロシージャは次のとおりです

CREATE PRODECURE [dbo].[viewSimilarRecords]
 @recordType varchar(25),
 @recordSource varchar(25)

 AS 
SELECT * FROM myTableName 
WHERE
(recordtype = @recordType) AND
(recordsource = @recordSource)

 GO

私が抱えている問題は、実行時に戻り値 0 が返され、結果の行が表示されないことです (SQL Server Management Studio)。

params に正しい値を渡していることと、複数のレコードが存在することを確認できます。

これは、実行時の execute ステートメントです。

USE [databasename]
GO

DECLARE @return_value int

EXEC @return_value = [dbo].[ViewSimilarRecords]
    @recordType = N'Error',
    @recordSource = N'Local'


 SELECT 'Return Value' = @return_value

 GO
4

2 に答える 2

2

これ以上の情報はありませんが、私は推測していますが、おそらくあなたのパラメータに一致するデータはありません. 手順はviewSimilarRecordsありませんviewExactmatchingRecords。コーディング方法では、すべてのパラメーターが完全に一致している必要があります。おそらく、次のようなことを試す必要があります。

CREATE PROCEDURE [dbo].[viewSimilarRecords]
 @recordType varchar(25),
 @recordSource varchar(25)

 AS 
SELECT * FROM myTableName 
WHERE
(recordtype  =@recordType   OR @recordType IS NULL) AND --<<change to OR??
(recordsource=@recordSource OR @recordSource IS NULL)
                          --^^^^^^^^^^^^^^^^^^^^^^^^
 GO

あなたはこれを見ることができます:Erland SommarskogによるT-SQLの動的検索条件

于 2011-08-29T20:50:26.937 に答える
0

ささいなことをすべてチェックしてください(明らかに、それは決してそうなることはありません...)。

1)手順が存在することを確認します。createステートメントで、pro- * c -e- * d -ureのスペルを間違えました

2)実行すると、非Unicode変数にUnicode(N')が適用されます。

@recordType = N'Error', @recordSource = N'Local'

代わりにこれを試してください:

@recordType =  'Error', @recordSource =  'Local'

3)パラメーターをインスタンス化し、手順のこの部分だけを直接実行して(強調表示して、F5キーを押します)、結果が得られることを確認します。

 ECLARE @recordType varchar(25)
 ECLARE @recordSource varchar(25) 
 SET @recordType = 'Error'
 SET @recordSource = 'Local'
 SELECT * FROM myTableName 
 WHERE
 (recordtype = @recordType) AND
 (recordsource = @recordSource)

4)これをすべて単独で直接実行します(上記の項目3が成功して、正しいデータベースにいることを確認した場合:

   EXEC [dbo].[ViewSimilarRecords] 'Error','Local'
于 2011-08-29T21:11:02.650 に答える