DECLARE @str1 nvarchar(5) ,@str2 nvarchar(5),@str3 nvarchar(5);
SET @str1='堃'
SET @str2=N'堃'
print @str1
print @str2
SET @str3 =@str1
print @str3
請問一下 各位前輩大能
在SQL中如字串儲存會變?,一般都是在前面加N,如上述中,@str2
,但有些情況是傳入預存程序中是個字串推疊如(A,B,C),解開後.運算判斷後再作
儲存的動作,不一定是範例@str3=str1,也有外面傳入再處理情況,只是表達字串處理後
怎麼排除儲存會?的情況,因為在變數時己經沒法加N
謝謝
以下是一個簡單的範例,演示如何在預存程序中使用nvarhcar字串:
CREATE PROCEDURE MyProcedure
@str1 nvarchar(5),
@str2 nvarchar(5),
@str3 nvarchar(5) OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SET @str3 = @str1
SELECT @str1 AS 'str1', @str2 AS 'str2', @str3 AS 'str3'
END
以下是如何在預存程序中使用這些參數:
DECLARE @output nvarchar(5)
EXEC MyProcedure '堃', N'堃', @output OUTPUT
SELECT @output AS 'output'
傳入預存程序時,一樣加個 N 就可以
Create PROCEDURE [dbo].[_test_1213_1]
@str1 nvarchar(5) ,
@str2 nvarchar(5)
AS
BEGIN
declare @str3 nvarchar(5)
print @str1
print @str2
SET @str3=@str1
print '@str3=='+@str3
SET @str3=@str2
print '@str3=='+@str3
END
GO
exec _test_1213_1 '堃',N'堃'
?
堃
@str3==?
@str3==堃