--动态sql的返回值declare @TransactorID int set @TransactorID=0 print(@TransactorID) exec sp_executesql N'select @TransactorID=5 ',N'@TransactorID int out ',@TransactorID out print(@TransactorID)
--动态sql的返回值declare @a int set @a=0exec sp_executesql N''select @a=houseownerphone1 from geren_'+@op+'_data where auid='+ltrim(@auid)',N'@a int out ',@a out print(@a)
exec('select @a=houseownerphone1 from geren_'+@op+'_data where auid=@auid') -------------------------------------- declare @sql nvarchar(4000) declare @houseownerphone1 varchar(100) set @sql='select @a=houseownerphone1 from geren_'+@op+'_data where auid=@auid' exec sp_executesql @sql,N'@a varchar(100) output',@houseownerphone1 output
set @TransactorID=0
print(@TransactorID)
exec sp_executesql N'select @TransactorID=5 ',N'@TransactorID int out ',@TransactorID out
print(@TransactorID)
set @a=0exec sp_executesql N''select @a=houseownerphone1 from geren_'+@op+'_data where auid='+ltrim(@auid)',N'@a int out ',@a out
print(@a)
exec('select @a=houseownerphone1 from geren_'+@op+'_data where auid=@auid')
--------------------------------------
declare @sql nvarchar(4000)
declare @houseownerphone1 varchar(100)
set @sql='select @a=houseownerphone1 from geren_'+@op+'_data where auid=@auid'
exec sp_executesql @sql,N'@a varchar(100) output',@houseownerphone1 output
过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@parameters'。
/*加上N 代表存入数据库时以Unicode 格式存储。
N'string' 表示string是个Unicode字符串Unicode 字符串的格式与普通字符串相似,但它前面有一个N 标识符(N 代表SQL-92 标准中的国际语言(National Language))。N 前缀必须是大写字母。例如,'Michél' 是字符串常量而N'Michél' 则是Unicode 常量。Unicode 常量被解释为Unicode 数据,并且不使用代码页进行计算。Unicode 常量确实有排序规则,主要用于控制比较和区分大小写。为Unicode 常量指派当前数据库的默认排序规则,除非使用COLLATE 子句为其指定了排序规则。Unicode 数据中的每个字符都使用两个字节进行存储,而字符数据中的每个字符则都使用一个字节进行存储。有关更多信息,请参见使用Unicode 数据。