【问题标题】:SQL use Unicode N in a Stored Procedure with variableSQL 在带有变量的存储过程中使用 Unicode N
【发布时间】:2017-02-04 15:34:34
【问题描述】:

我有以下存储过程,我正在寻找正确的语法,以便我可以在评论列中播放评论值,前端有 N Unicode 的值我需要保存俄语字符值

所以目前 cmets 值是这样传递的

@cmets

我想做

N@cmets 但不工作

ALTER PROCEDURE [dbo].[spInsertContactUs]
(
@title VARCHAR(20) = default,
@forename VARCHAR(100) = default,
@surname VARCHAR(100) = default,
@gender VARCHAR(50) = default,
@address1 VARCHAR(100) = default,
@address2 VARCHAR(100) = default,
@city VARCHAR(50) = default,
@county VARCHAR(50) = default,
@country INT = default,
@zipcode VARCHAR(50) = default,
@email VARCHAR(200) = default,
@comments NVARCHAR(MAX) = default,
@mailinglist BIT = default,
@address3 VARCHAR(100) = default,
@dateOfBirth datetime = default
)
AS
SET NOCOUNT ON

INSERT INTO tblContactUs (
dateAdded,
title,
forename,
surname,
gender,
address1,
address2,
city,
county,
country,
zipcode,
email,
comments,
mailinglist,
address3,
dateOfBirth)
VALUES (
getdate(),
@title,
@forename,
@surname,
@gender,
@address1,
@address2,
@city,
@county,
@country,
@zipcode,
@email,
@comments,
@mailinglist,
@address3,
@dateOfBirth
)

SET NOCOUNT OFF
RETURN

;

【问题讨论】:

  • 顺便说一句,在 SQL Server 中使用“sp***”命名存储过程是一个坏主意,因为查询分析器总是搜索具有该命名约定的系统存储过程。
  • @JNK 有这种行为的是sp_ 而不是sp
  • @Martin - 我以为它只需要 SP ......但你是对的!
  • 好吧,很高兴知道!
  • 我已经更新了我的答案。 stackoverflow.com/questions/1856239/…

标签: sql unicode asp-classic


【解决方案1】:

在表的字段和存储的 procs 参数中使用 Nvarchar 数据类型。

添加

查看this链接,也许这会对你有所帮助。

【讨论】:

  • 嘿,伊戈尔,是的,正如您在上面的存储过程中看到的那样,我是 @cmets NVARCHAR(MAX) = default 但没有乐趣
  • 表格中的字段呢?
  • 是的,我把它改成了 NVARCHAR(MAX)
  • 所以你说当我使用 NVARCHAR 时,我不需要在插入 DB 时查看在值前添加 N
  • @StevieB - N 只是在 unicode 格式的单引号中生成任何内容。
【解决方案2】:

这行得通。我自己想通了:

Command.Parameters.Add("@prc", SqlDbType.NVarChar).Value = strPrc; 

您需要将 SqlDbType 更改为 NVarChar。您还需要将字段更改为 Nvarchar 字段,并将存储过程也更改为该字段。

【讨论】:

    【解决方案3】:
    declare @a nvarchar(50)
    set @a =N'تست'
    
    exec('INSERT INTO [dbo].[tblP] ([productVal],[name],[month])  VALUES ( 9, '+'N'''+@a+''',1)')
    INSERT INTO [dbo].[tblP] ([productVal],[year],[month])  VALUES ( 9, N'تست',1)
    

    【讨论】:

    • 请在代码之外提供一些解释。
    猜你喜欢
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多