exec执行的问题,急

Bmonkey 2005-03-08 02:27:53
CREATE PROCEDURE test
@Condition varchar(100)
AS
declare @sql nvarchar(400)
set @sql='select * from student where Sdept='+@Condition
print(@sql)
exec(@sql)
GO


如上存储过程,执行的时候有错误,用print打出来是例如
select * from student where Sdept=MA
这样的,我想的得到
select * from student where Sdept=‘MA’
这样的@sql串该怎么改啊,谢谢
...全文
158 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bmonkey 2005-03-08
  • 打赏
  • 举报
回复
我昨天那样写的时候都调用成功了,后来改了改就出错了,这样可以用就先这样用,过后再来想了
xluzhong 2005-03-08
  • 打赏
  • 举报
回复
看你调用存储过程应该是这样,而不是用sp_executesql

CREATE PROCEDURE N_GetRecordsByCondition
@SearchType nvarchar(50),
@Condition nvarchar(100)
AS
declare @ExecuteSql nvarchar(400)
set @ExecuteSql = N'select S.Sno,S.Sname,S.Ssex,S.Sage,S.Sdept,C.Cname,SC.Grade from Student as S left join SC on S.Sno=SC.Sno left join Course as C on SC.Cno=C.Cno'
set @ExecuteSql = @ExecuteSql + ' where '+@SearchType+' = ''' +@Condition+''''
print(@ExecuteSql)
exec (@ExecuteSql)
GO
Bmonkey 2005-03-08
  • 打赏
  • 举报
回复
CREATE PROCEDURE N_GetRecordsByCondition
@SearchType nvarchar(50),
@Condition nvarchar(100)
AS
declare @ExecuteSql nvarchar(400)
set @ExecuteSql = N'select S.Sno,S.Sname,S.Ssex,S.Sage,S.Sdept,C.Cname,SC.Grade from Student as S left join SC on S.Sno=SC.Sno left join Course as C on SC.Cno=C.Cno'
set @ExecuteSql = @ExecuteSql + ' where @SearchType = ''' +@Condition+''''
print(@ExecuteSql)
exec sp_executesql @ExecuteSql,N'@SearchType nvarchar(50)',@SearchType
GO


如上存储过程,其中
select S.Sno,S.Sname,S.Ssex,S.Sage,S.Sdept,C.Cname,SC.Grade from Student as S left join SC on S.Sno=SC.Sno left join Course as C on SC.Cno=C.Cno
这句可以取出的值有
(部分)
Sno Sname
----- --------------------
95001 李涌
95001 李涌
95001 李涌
95002 刘晨
95002 刘晨
95002 刘晨
95003 王敏
95004 张立


最后,我这样执行存储过程,怎么不能取出值呢?
declare @SearchType varchar(50)
declare @Condition varchar(100)
set @SearchType='S.Sname'
set @Condition='李涌'
exec N_GetRecordsByCondition @SearchType,@Condition


xluzhong 2005-03-08
  • 打赏
  • 举报
回复
sql中一律用两个单引号表示单引号

CREATE PROCEDURE test
@Condition varchar(100)
AS
declare @sql nvarchar(400)
set @sql='select * from student where Sdept='''+@Condition+''''
print(@sql)
exec(@sql)
GO
lsxaa 2005-03-08
  • 打赏
  • 举报
回复
CREATE PROCEDURE test
@Condition varchar(100)
AS
declare @sql nvarchar(400)
set @sql='select * from student where Sdept='''+@Condition+''''
print(@sql)
exec(@sql)
GO

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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