unicode ,procedure, @變量問題 declare @X Nvarchar(800),@y Nvarchar(100)set @x=N'AABBB'set @y=N'BBBAAA'insert into tb1(x,y) values(@x,@y) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可是我的@x,@y是proc 的參數﹐不是字串常量 create proc 存储过程名 @X Nvarchar(100),@Y @Nvarchar(100)asinsert into tb1(x,y) values(@x,@y) exec 存储过程名 @x=N'AABBB',@y=N'AABBB' ---执行存储过程 没关系的,你可以直接把变量申明为nvarchar,nchar如:declare @a nvarchar(10)....exec xxx(@a)或在用的时候转换:declare @a varchar(10)...exec xxx(cast(@a as nvarchar(10))) 这个...莫非是我说的话有歧义??我的本意是想把从外部取得的资料以 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='+@ygo====================================可以看到, 输出的@x 和 @y 是不同的.我的需求是: 如何使@x输出unicode字符 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='+@ygo 还没有明白我的意思吗?我是在外部调用这个Proc肯定是个变量,不可能出现 exec test N'ánimo abstraído' 的只能是调用类似 exec test xxx -->变量 我是这样调用的,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 create procedure t1 @x nvarchar(50)as declare @tmpx nvarchar(50) set @tmpx = N'' + @x insert into tb1(x,y) values(@tmpx ,@y) exec test cast(xxx as nvarchar(100))呢? 回﹕ qiubolecn(来自差生市) 就是這個意思﹐但這個方法我有試﹐不行。回 ﹕ pengdali(大力 V2.0) 我的資料欄位以及變量本來就全部定義為 nvarchar做不做一個轉換好象沒有什么必要﹐主要是加上N,sqlserver才會認為是以unicode方式儲存否則就會以一般的ANSI方式儲存。=========也許我可以試試用動態SQL把字串拼起來 經反復測試﹐我發現字串在進入proc前如果沒有成為unicode的話﹐再proc里面改是沒有意義的。所以﹐我更改了我的外部代碼﹐將("@username",adVarchar, adParamInput,50,username)中的 adVarchar 改為了 adVarwchar (常量參看ms的adovbs.inc)OK=====================謝謝大家的回復。結貼中... 求sql语句。。。 sql基础问题 一个简单问题!!!! 如何检测一下连接上是否有事务?在线等 SQL 中如何在结果加入自增列(不使用临时表) 如何建立时间触发器?? 求救:怎么将这个流保存到数据库中? 谁有卖火柴的注册软件?高手求要[email protected] 关于Image类型 在sql中的binary字段中如何存入图片和word文档(文档中有公式和上下标) <分不多了,见凉>关于RerultSet判断结果的问题(附代码) 急,急,真的急呀!快尿尿了!!~~
as
insert into tb1(x,y) values(@x,@y)
如:
declare @a nvarchar(10)
....
exec xxx(@a)或在用的时候转换:
declare @a varchar(10)
...
exec xxx(cast(@a as nvarchar(10)))
莫非是我说的话有歧义??我的本意是想把从外部取得的资料以 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字符
@x nvarchar(50)
as
declare @y nvarchar(50)
set @y =N'ánimo abstraído'
print 'x='+@x
print 'x2='+@y
go
只能是调用类似 exec test xxx -->变量
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
@x nvarchar(50)
as
declare @tmpx nvarchar(50)
set @tmpx = N'' + @x insert into tb1(x,y) values(@tmpx ,@y)
就是這個意思﹐但這個方法我有試﹐不行。
回 ﹕ pengdali(大力 V2.0)
我的資料欄位以及變量本來就全部定義為 nvarchar
做不做一個轉換好象沒有什么必要﹐主要是加上N,sqlserver才會認為是以unicode方式儲存
否則就會以一般的ANSI方式儲存。=========
也許我可以試試用動態SQL把字串拼起來
再proc里面改是沒有意義的。所以﹐我更改了我的外部代碼﹐將("@username",adVarchar, adParamInput,50,username)
中的 adVarchar 改為了 adVarwchar (常量參看ms的adovbs.inc)OK
=====================
謝謝大家的回復。結貼中...