存储过程的字段名用变量代替,不是用'@变量名'么?
select * FROM DisciplineInfo WHERE @fild=@valu;
和 select * FROM DisciplineInfo WHERE '+@fild+'=@valu;
这两个都不好使,怎么回事啊
select * FROM DisciplineInfo WHERE @fild=@valu;
和 select * FROM DisciplineInfo WHERE '+@fild+'=@valu;
这两个都不好使,怎么回事啊
解决方案 »
- 获取Prev/Next
- 关于用ASP.NET开发社区网站
- 共同研究一下网易网盘
- 得到原先的网页地址???
- 如何让Mediaplay在边播MP3时播放到那首歌曲自动去执行一个函数高手们帮帮忙
- 为什么绑定xml文件到TreeNodeSrc属性后,老是出现"The data at the root level is invalid. Line 1, position 1."异常...
- 如何向Repeater的某个单元格中添加一个控件,如何做??
- 问一个关于删除缓存的问题!急
- 急!如何输入密码3次错误就退出
- 在DataGrid中的Checkbox选中了之后为什么cb.checked仍是false?
- 求详细解释整条sql语句
- 关于MasterPage的问题
exec('select * from tb where '+@fild+'='+@value)
ALTER proc [dbo].[DisciplineInfo1] @zx varchar(6),@fild varchar(20)=null,@valu varchar(40)=null
as
if @zx='selid'
exec('select * from DisciplineInfo where '+@fild+'='+@valu)
调用的时候用
execute DisciplineInfo1 "selid","Id","y89312"
显示列名无效,是怎么回事?
N'select * FROM DisciplineInfo WHERE @fild=@valu;'
,N'@fild nvarchar(100),@valu nvarchar(50)'
,@fild
,@valu;
详情参见:
http://msdn.microsoft.com/zh-cn/library/ms188001.aspx
create table #t(id int, name varchar(10));insert into #t
select 1, 'zhangsan' union all
select 2, NULLdeclare @field varchar(10)
set @field = 'id'
declare @value int
set @value = 1
declare @execSql varchar(500)
set @execSql = ' select * from #t where {0} = ''{1}'' '
set @execSql = Replace(@execSql, '{0}', @field)
set @execSql = Replace(@execSql, '{1}', @value) SELECT @execSql
EXEC(@execSql)drop table #t
go
还是不理解你为什么要使用动态字段名……
execute DisciplineInfo1 "selid","DisciplineName","农学"
查询字段的值一有字母或汉字就显示 在将 varchar 值 '农学' 转换成数据类型 int 时失败。
如果把表内“农学”改成数字的话就可以正常显示。这是什么原因啊
给你正确答案你不用,就连相关的MSDN文章也无法给你了,
非要用那些错误的答案