sql语法错误??

quweiie 2011-03-14 11:23:52

SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[addCards]
@startNo int,
@endNo int,
@newspaper varchar(10),
@payment varchar(10),
@cardType varchar(10),
@years varchar(10),
@unitprice money,
@xzzt tinyint,
@endDate smalldatetime,
@outstr tinyint output
as
begin
declare @cardIndex varchar(10)
declare @cardpsw varchar(10)
declare @strsql varchar(200)
set @cardIndex=@newspaper+@payment+@cardType+@years
begin
if @xzzt=1
@strsql=insert into CardSale(CardId,Cardpsw,jf,endDate) values(@cardIndex+convert(varchar(20),right('0000000'+ltrim(@startNo),7)),@cardpsw,@unitprice,@endDate)--这行有误
else
@strsql=insert into CardSale(CardId,Cardpsw,jf) values(@cardIndex+convert(varchar(20),right('0000000'+ltrim(@startNo),7)),@cardpsw,@unitprice)--有误
end
while @startNo<= @endNo
begin
set @cardpsw=LEFT(LOWER(NEWID()),8)
insert into Cards(cardID,cardpsw,sn,cardIndex,newspaper,payment,cardType,years,unitprice,endDate,xzzt)
values(@cardIndex+convert(varchar(20),right('0000000'+ltrim(@startNo),7)),@cardpsw,@startNo,@cardIndex,@newspaper,@payment,@cardType,@years,@unitprice,@endDate,@xzzt)
exec @strsql --我这样写不知对不对??
set @startNo=@startNo+1
end
if @@error=0
begin
set @outstr=0
end
else
begin
set @outstr=1
end
return @outstr
end
...全文
75 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
quweiie 2011-03-14
  • 打赏
  • 举报
回复

'insert into CardSale(CardId,Cardpsw,jf,endDate) values('+@cardIndex+convert(varchar(20),right('0000000'+ltrim('+@startNo+'),7))'+','+@cardpsw+','+@unitprice+','+@endDate+')'
报错
gw6328 2011-03-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 quweiie 的回复:]
SQL code

@strsql=insert into CardSale(CardId,Cardpsw,jf,endDate) values(@cardIndex+convert(varchar(20),right('0000000'+ltrim(@startNo),7)),@cardpsw,@unitprice,@endDate)--这行有误

@strsql=insert in……
[/Quote]
变量不能这样
set @str='select * from tb'; exec(@str) --可以
set @str=select * from tb; exec(@str) --不行。
quweiie 2011-03-14
  • 打赏
  • 举报
回复

@strsql='insert into CardSale(CardId,Cardpsw,jf,endDate) values('+@cardIndex+''+convert(varchar(20),right('0000000'+ltrim('+@startNo+'),7))+','+@cardpsw+','+@unitprice+','+@endDate+')'
这行报错
quweiie 2011-03-14
  • 打赏
  • 举报
回复

@strsql=insert into CardSale(CardId,Cardpsw,jf,endDate) values(@cardIndex+convert(varchar(20),right('0000000'+ltrim(@startNo),7)),@cardpsw,@unitprice,@endDate)--这行有误

@strsql=insert into CardSale(CardId,Cardpsw,jf) values(@cardIndex+convert(varchar(20),right('0000000'+ltrim(@startNo),7)),@cardpsw,@unitprice)--有误
-狙击手- 2011-03-14
  • 打赏
  • 举报
回复
@strsql=insert into CardSale....
-----------
@strsql='insert into CardSale....
王向飞 2011-03-14
  • 打赏
  • 举报
回复
exec @strsql 这是运行存储过程
王向飞 2011-03-14
  • 打赏
  • 举报
回复
exec (@strsql )

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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