Skip to content Skip to sidebar Skip to footer

N Prefix And Parameter

I have some stored procedure CREATE PROC MyProc ( @FullName NVARCHAR(200) = NULL ) AS --............. When I call this proc as exec MyProc 'Some english text' it works good.

Solution 1:

The N would only be needed (manually) if you are concatenating a string in the .net code. It's automatic if you declare a SQLParameter as nvarchar: the framework takes care of it for you.

So your client code is incorrect and opens you up to SQL injection

Anyway, the N says that the string literal is unicode.

Solution 2:

N means National language character set also well known as Unicode.

See on Microsoft KB: You must precede all Unicode strings with a prefix N when you deal with Unicode string constants in SQL Server

Solution 3:

What kind of client application do you use?

  • if it is .Net - just specify that parameter has Unicode type.
  • If it is OLEDB/ADO - the same thing, param must be marked as unicode, and pass wchar_t instead of char

Update Sample from msdn (pay attention to NVarChar):

yourCommand.Parameters.Add(
    "@FullName", SqlDbType.NVarChar, 80).Value = "toasters";

And please avoid SQL injection ;)

Post a Comment for "N Prefix And Parameter"