为甚存储过程编译成功,执行时却总出现报错?谢谢各位大哥哥们帮忙
dropPROCEDUREdrug1CREATEPROCEDUREdrug1@Corenamesmallint,@lhnvarchar(20),@rhnvarchar(2...
drop PROCEDURE drug1
CREATE PROCEDURE drug1
@Corename smallint,
@lh nvarchar(20),
@rh nvarchar(20)
AS
begin
DECLARE @TableName nvarchar(20)
declare @ni varchar(2000)
SET @TableName='Core'+cast(@Corename as varchar(2))
set @ni='select * from '+@TableName+'where lh='+@lh+'and rh='+@rh
exec(@ni)
end
sp_helptext drug1
执行:
drug1 14,'GIG42','PRO1708'
报错:
消息 102,级别 15,状态 1,第 1 行
'=' 附近有语法错误。 展开
CREATE PROCEDURE drug1
@Corename smallint,
@lh nvarchar(20),
@rh nvarchar(20)
AS
begin
DECLARE @TableName nvarchar(20)
declare @ni varchar(2000)
SET @TableName='Core'+cast(@Corename as varchar(2))
set @ni='select * from '+@TableName+'where lh='+@lh+'and rh='+@rh
exec(@ni)
end
sp_helptext drug1
执行:
drug1 14,'GIG42','PRO1708'
报错:
消息 102,级别 15,状态 1,第 1 行
'=' 附近有语法错误。 展开
1个回答
展开全部
exec(@ni)
语句之前 加入 print @ni 语句输出 @ni 的 到底是怎么sql
然后 根据这个 sql进行 错误排查.
编译通过,不代表程序可以正常运行.
任意开发语言都是这样的,这个并不奇怪
语句之前 加入 print @ni 语句输出 @ni 的 到底是怎么sql
然后 根据这个 sql进行 错误排查.
编译通过,不代表程序可以正常运行.
任意开发语言都是这样的,这个并不奇怪
追问
首先非常感谢您,您的建议非常启发我,加入print @ni后还是报错麻烦您了
执行:
drug1 14,GIG42,PRO1708
报错:
select * FROM Core14 WHERE lh=@lh and rh=@rh
消息 137,级别 15,状态 2,第 1 行
必须声明标量变量 "@lh"。
困惑:@lh已经声明过了的,
追答
CREATE PROCEDURE drug1
@Corename smallint,
@lh nvarchar(20),
@rh nvarchar(20)
AS
begin
DECLARE @TableName nvarchar(20)
declare @ni varchar(2000)
SET @TableName='Core'+cast(@Corename as varchar(2))
set @ni='select * from '+@TableName+'where lh='+@lh+'and rh='+@rh
PRINT @ni
EXEC (@ni)
END
GO
drug1 14,'GIG42','PRO1708'
--输出的sql语句
select * from Core14where lh=GIG42and rh=PRO1708
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询