1

私はこのストアドプロシージャ呼び出しを行っています:

exec sp_executesql N'EXEC MyStoredProcedure 
     @MyId = @0, @MyVarField = @1', 
     N'@0 int, @1 nvarchar(4000)',
     @0=2, @1='lll/kkk'

ストアドプロシージャは単純な選択であり、を探しますMyVarField = 'lll/kkk'/、パラメータ内のはそれを壊しているようです...とにかくdb行を見つけることができません。

渡すと、'ffflll'を含む行が見つかりますがlllkkk、が含まれている場合は見つかりません/。それはどういうことですか?

ALTER PROCEDURE [dbo].[MyStoredProcedure]
@MyId int,
@MyVarField  varchar
AS
BEGIN
SET NOCOUNT ON;

SELECT * FROM MyTable WHERE VarField = @VarField
END 

/をaの一部として受け入れるようにするには、ストアドプロシージャに対して何をする必要がありvarcharますか?

4

2 に答える 2

3

パラメーターをステートメント(およびおそらく基になる列)と同じタイプに一致させ、長さを指定してみてください。

ALTER PROCEDURE [dbo].[MyStoredProcedure]
    @MyId int,
    @MyVarField NVARCHAR(4000)
AS
...

現在のところ、失敗はスラッシュとは何の関係もないと思います。これを試して:

CREATE PROCEDURE dbo.foo
  @bar VARCHAR
AS
  PRINT @bar;
GO

EXEC dbo.foo '12345';

いくつかの背景については、以下をお読みください。

于 2012-09-20T20:15:24.283 に答える
-2

スラッシュ(「/」)は、RUNコマンドのショートカットです(mysqlまたはsqlserverの「go」など)。

http://power2build.wordpress.com/2011/12/09/forward-slash-in-sqlplus/

于 2012-09-20T19:56:23.897 に答える