日期:2014-05-19  浏览次数:20581 次

一个简单的问题,受累哪位兄弟帮一下
CREATE   PROCEDURE   SP_CostPoint
@FirstPara       int,                                                                             --一级编号
@SecondPara     int,                                                                   --二级编号     
@UpCode   varchar(20)   output,                               --上行指令
@AddressCode   varchar(20)   output,               --地址码 
@CostShow   varchar(20)   output                           --资费说明
AS
declare   @strSQL       varchar(500)                           --   主语句

SET   NOCOUNT   on
begin
    set   @strSQL   =   "select   top   1   @UpCode=UpCode,@AddressCode=AddressCode,@CostShow   =CostShow   from     SecondLevel   where   FirstID= "     +   @FirstPara   +   "   and   SecondID= "   +   @SecondPara
    exec   (@strSQL)
    return
end
SET   NOCOUNT   off
GO

我是这样调用的:
declare   @UpCode   varchar(20),@AddressCode   varchar(20),@CostShow   varchar(20)
execute   SP_CostPoint   1,1,@UpCode   output,@AddressCode   output,@CostShow   output

报错:
服务器:   消息   245,级别   16,状态   1,过程   SP_CostPoint,行   12
将   varchar   值   'select   top   1   @UpCode=UpCode,@AddressCode=AddressCode,@CostShow   =CostShow   from     SecondLevel   where   FirstID= '   转换为数据类型为   int   的列时发生语法错误。

我传进来时是INT类型的啊,我初学存储过程,请大家指点,还有我哪里写的不合理也请大家说出来,谢谢了!

------解决方案--------------------
"符号 似乎 不是 SQL 的字符限定符号吧???

'是!
------解决方案--------------------
CREATE PROCEDURE SP_CostPoint
@FirstPara int, --一级编号
@SecondPara int, --二级编号     
@UpCode varchar(20) output, --上行指令
@AddressCode varchar(20) output, --地址码 
@CostShow varchar(20) output --资费说明
AS
declare @strSQL varchar(500) -- 主语句

SET NOCOUNT on
begin
select top 1 @UpCode=UpCode,@AddressCode=AddressCode,@CostShow =CostShow
from SecondLevel
where FirstID=@FirstPara and SecondID=@SecondPara
end
SET NOCOUNT off
GO