有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。

亚细亚 2011-10-08 04:51:43
存储过程:
if exists(select 1 from sysobjects where name='BaseCodeSave_p' and xtype='p')
drop procedure dbo.BaseCodeSave_p
go
create procedure BaseCodeSave_p

@outStr nvarchar (64) output ,
@gasTypeName nvarchar(64) -- 气体名称
as
SET NOCOUNT ON
declare @sql nvarchar(2000)

begin
set @sql='insert into baseCode_t (gasTypeName) values ('+@gasTypeName+')'
exec sp_executesql @sql
set @outStr='保存成功!'
end
--=================================================
在查询分析器中执行:
declare @m1 nvarchar(64)
exec BaseCodeSave_p
@outStr=@m1 output ,
@gasTypeName='氮气'
提示:
消息 128,级别 15,状态 1,第 1 行
在此上下文中不允许使用名称 "氮气"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。

字段gasTypeName类型是varchar(32)
如果将@gasTypeName='氮气'改为 @gasTypeName='12'就执行成功!

不知什么原因?
...全文
354 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2011-10-08
  • 打赏
  • 举报
回复
看看 动态SQL基本用法
黄_瓜 2011-10-08
  • 打赏
  • 举报
回复
values ('''+@gasTypeName+''')' 
亚细亚 2011-10-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sql777 的回复:]

set @sql='insert into baseCode_t (gasTypeName) values ('''+@gasTypeName+''')'
[/Quote]
谢谢!
SQL777 2011-10-08
  • 打赏
  • 举报
回复
set @sql='insert into baseCode_t (gasTypeName) values ('''+@gasTypeName+''')'

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧