SQl 里面 我把 SQl查询语句写在一个临时变量里面,我该如何调用该变量来执行查询
createprocedure[dbo].[Pro_CheckC]@batcodenvarchar(50)asdeclare@SQLnvarchar(1000)decla...
create procedure [dbo].[Pro_CheckC]
@batcode nvarchar(50)
as
declare @SQL nvarchar(1000)
declare @TableName nvarchar(100)
declare @ProcessName nvarchar(50)
declare @LoginTime nvarchar(20)
declare @date nvarchar(6)
set @SQL=''
set @TableName=''
set @ProcessName=''
set @LoginTime=''
set @date=''
begin
set
@ProcessName=(select Processname from BatLogin where BatCode=
@batcode)
set
@LoginTime=(select LoginTime from BatLogin where BatCode=@batcode)
set
@date=(SUBSTRING(@LoginTime,0,4)+SUBSTRING(@LoginTime,4,2))
set
@TableName=('TableSel_'+@ProcessName+'_'+@date)
set
@SQL=('select * from '+@TableName+' where BatCode='+@batcode)
end
exec(@SQL)
(消息 102,级别 15,状态 1,第 1 行
'-' 附近有语法错误。)
怎么无法执行存储过程
exec Pro_CheckC @batcode='13031210959EB'
这样的执行语句还有错吗 展开
@batcode nvarchar(50)
as
declare @SQL nvarchar(1000)
declare @TableName nvarchar(100)
declare @ProcessName nvarchar(50)
declare @LoginTime nvarchar(20)
declare @date nvarchar(6)
set @SQL=''
set @TableName=''
set @ProcessName=''
set @LoginTime=''
set @date=''
begin
set
@ProcessName=(select Processname from BatLogin where BatCode=
@batcode)
set
@LoginTime=(select LoginTime from BatLogin where BatCode=@batcode)
set
@date=(SUBSTRING(@LoginTime,0,4)+SUBSTRING(@LoginTime,4,2))
set
@TableName=('TableSel_'+@ProcessName+'_'+@date)
set
@SQL=('select * from '+@TableName+' where BatCode='+@batcode)
end
exec(@SQL)
(消息 102,级别 15,状态 1,第 1 行
'-' 附近有语法错误。)
怎么无法执行存储过程
exec Pro_CheckC @batcode='13031210959EB'
这样的执行语句还有错吗 展开
5个回答
展开全部
set@SQL=('select * from '+@TableName+' where BatCode='+@batcode)
改为
set @SQL=('select * from '+@TableName+' where BatCode='''+@batcode+'''')
BatCode 应该是字符串类型。
改为
set @SQL=('select * from '+@TableName+' where BatCode='''+@batcode+'''')
BatCode 应该是字符串类型。
追问
是字符串啊,但是还是执行不了啊
追答
我测了没问题,可能要具体问题具体分析了
你把exec(@SQL) 改成 select @SQL
输出出来,看看你拼接的sql是怎样的。
展开全部
你可以用exec来执行
如declare @sql varchar(100)
set @sql = 'select * from table1'
exec(@sql)
出现错误,你可以先将@SQL的内容显示出来看看,组成的SQL语句是否正确.
你上面的例子应为组@SQL时不对,@batcode为nvarchar类型,组时应加上引号.
如declare @sql varchar(100)
set @sql = 'select * from table1'
exec(@sql)
出现错误,你可以先将@SQL的内容显示出来看看,组成的SQL语句是否正确.
你上面的例子应为组@SQL时不对,@batcode为nvarchar类型,组时应加上引号.
追问
我的那个是先把存储过程写好,然后再调用存储过程。。you know
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接在后面的SQL语句中的where条件中 字段= 变量
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
exec(@变量)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
exec(@变量)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询