declare @X Nvarchar(800),@y Nvarchar(100)
set @x=N'AABBB'
set @y=N'BBBAAA'insert into tb1(x,y) values(@x,@y)

解决方案 »

  1.   

    可是我的@x,@y是proc 的參數﹐不是字串常量
      

  2.   

    create proc 存储过程名  @X Nvarchar(100),@Y @Nvarchar(100)
    as
    insert into tb1(x,y) values(@x,@y)
      

  3.   

    exec 存储过程名 @x=N'AABBB',@y=N'AABBB' ---执行存储过程
      

  4.   

    没关系的,你可以直接把变量申明为nvarchar,nchar
    如:
    declare @a nvarchar(10)
    ....
    exec xxx(@a)或在用的时候转换:
    declare @a varchar(10)
    ...
    exec xxx(cast(@a as nvarchar(10)))
      

  5.   

    这个...
    莫非是我说的话有歧义??我的本意是想把从外部取得的资料以 unicode的方式存入sqlServer(例如asp)但在Sqlserver中必须加 N' 才会将资料存为unicode方式.例如我的资料为@x, 如何将@x写入资料库, 请不要拿 N'aaabb'来做比,一个是变量,一个是常量.
    可以在查询器里测试下列代码(字串为西班牙文,如果看见和英文一样,就是论坛不支持)=========================================
    exec test 'ánimo abstraído'Create proc test 
      @x nvarchar(50)
    as
     declare @y nvarchar(50)
    set @y =N'ánimo abstraído'
       print 'x='+@x
       print 'x2='+@y
    go====================================
    可以看到, 输出的@x 和 @y  是不同的.
    我的需求是: 如何使@x输出unicode字符
      

  6.   

    exec test N'ánimo abstraído'Create proc test 
      @x nvarchar(50)
    as
     declare @y nvarchar(50)
    set @y =N'ánimo abstraído'
       print 'x='+@x
       print 'x2='+@y
    go
      

  7.   

    还没有明白我的意思吗?我是在外部调用这个Proc肯定是个变量,不可能出现 exec test N'ánimo abstraído' 的
    只能是调用类似 exec test xxx -->变量
      

  8.   

    我是这样调用的,username 就是我要的变量
    cmd.commandText="Proc_Class_Add"
    cmd.commandType=adCmdStoredProc
    cmd.parameters.Append cmd.CreateParameter ("@keyid",adInteger, adParamInput,4,0)
    cmd.parameters.Append cmd.CreateParameter ("@username",adVarchar, adParamInput,50,username)
    cmd.parameters.Append cmd.CreateParameter ("@message",adVarchar,adParamOutput,50)
    cmd.Execute
      

  9.   

    create procedure t1
     @x nvarchar(50)
    as
      declare @tmpx nvarchar(50)
      set @tmpx = N'' + @x  insert into tb1(x,y) values(@tmpx ,@y)
      

  10.   

    exec test cast(xxx as nvarchar(100))呢?
      

  11.   

    回﹕ qiubolecn(来自差生市)
       就是這個意思﹐但這個方法我有試﹐不行。
    回 ﹕ pengdali(大力 V2.0)
      我的資料欄位以及變量本來就全部定義為 nvarchar
    做不做一個轉換好象沒有什么必要﹐主要是加上N,sqlserver才會認為是以unicode方式儲存
    否則就會以一般的ANSI方式儲存。=========
    也許我可以試試用動態SQL把字串拼起來
      

  12.   

    經反復測試﹐我發現字串在進入proc前如果沒有成為unicode的話﹐
    再proc里面改是沒有意義的。所以﹐我更改了我的外部代碼﹐將("@username",adVarchar, adParamInput,50,username)
    中的 adVarchar 改為了 adVarwchar (常量參看ms的adovbs.inc)OK
    =====================
    謝謝大家的回復。結貼中...