2015-10-04 4 views
0

я это хранимая процедурахранимая процедура для поддержки Юникода

ALTER PROC [Resource_Control].[sp_LocationsInsert] 
@name nvarchar(100) = NULL, 
@address nvarchar(500) = NULL 
AS 

SET NOCOUNT ON 
SET XACT_ABORT ON 

BEGIN TRAN 

INSERT INTO [Resource_Control].[Location] ([name], [address]) 
SELECT N'@name', N'@address' 

COMMIT 

имя и адрес столбца оба NVARCHAR мне нужно N перед моими параметрами? , и если да, я положил их в нужное место?

+3

Side Примечание: вы должны ** ** не использовать 'sp_' префикс для вашего хранимые процедуры. Microsoft [зарезервировала этот префикс для собственного использования (см. * Именование сохраненных процедур *)] (http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx) и вы рискуете столкнуться с именем когда-нибудь в будущем. [Это также плохо для производительности вашей хранимой процедуры] (http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix). Лучше просто просто избегать 'sp_' и использовать что-то еще в качестве префикса - или никакого префикса вообще! –

ответ

1

Нет, они вам не нужны.

Demo

INSERT INTO [Resource_Control].[Location] ([name], [address]) 
SELECT N'@name', N'@address' 

вставит значения '@name' и '' @address на столбцы.

Вы должны использовать:

INSERT INTO [Resource_Control].[Location] ([name], [address]) 
SELECT @name, @address; 

используется N'' для строковых литералов не переменные, такие как:

DECLARE @var NVARCHAR(100) = N'text'; 
Смежные вопросы