1

ASP.NET アプリケーションからストアド プロシージャを呼び出しています。ストアド プロシージャは 1 つのパラメーターを取ります。Web フォームから提供している値が大きすぎて、SQL サーバーの変数に完全にロードされませんでした。SQL サーバー パラメータのデータ型は nvarchar(max) で、ASP.NET アプリケーションのデータ型は文字列です。ストアドプロシージャは次のとおりです

Create procedure p_getProducts
@nm_emp nvarchar(max)
AS
BEGIN

  select * from tblProduct where nm_user in(convert(nvarchar(max),@nm_emp));

END

この問題を解決するために使用する SQL サーバーのデータ型を教えてください。

ありがとう。

4

1 に答える 1

1

あなたのコードから推測できることについては、動的SQLを使用し、パラメータをIN句の値として直接使用しないでください。このプロセスで試してください。

Create procedure p_getProducts
      @nm_emp nvarchar(max)
AS
    BEGIN
    DECLARE @SQL NVARCHAR(MAX); 
    SELECT @SQL = N'select * from tblProduct where nm_user in(' + 
                  @nm_emp + N')'

    EXEC sp_executeSQL @SQL
于 2013-03-02T13:48:08.507 に答える