存储过程执行的问题

New919 2006-06-29 12:38:53
我自己写了一个代码生成器,用它生成的存储过程可以在查询分析器里面成功执行
但是我把这些生成的文本作为SqlCommand的CommandText
执行ExecuteNonQuery方法就报错了
存储过程的形式为:
crerate procedure sp1
as
...
go

create procedure sp2
as
...
go

....

报错信息类似于
Line 18: Incorrect syntax near 'GO'.
Line 31: Incorrect syntax near 'GO'.
Line 41: Incorrect syntax near 'GO'.
Line 49: Incorrect syntax near 'GO'.
Line 59: Incorrect syntax near 'GO'.
Line 96: Incorrect syntax near 'GO'.
Line 124: Incorrect syntax near 'GO'.
Line 132: Incorrect syntax near 'GO'.
Line 141: Incorrect syntax near 'GO'.

这个是什么原因啊?
...全文
162 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
scow 2006-12-28
  • 打赏
  • 举报
回复
SqlCommand.CommandType设了没。
--随口说说,错了莫怪。
fcuandy 2006-12-28
  • 打赏
  • 举报
回复
go 不是标准t-sql命令.

create table tb(id int)
insert tb select 1
alter table tb add v int
update tb set v=0
drop table tb

此时,查询分析器在编译时,针对tb,到update这句时,表中并没有v列(编译顺序及语法检查并非执行过程那样一行一行来的),就会报错.

而改成

create table tb(id int)
insert tb select 1
alter table tb add v int
go
update tb set v=0
drop table tb

这样sql知道在前面的语句理解完之后再去理解后面的语句
copall 2006-06-29
  • 打赏
  • 举报
回复
若在查询分析器里,会自动加上GO的,所以可以执行

但在其他程序中不能有GO~!
Andfly 2006-06-29
  • 打赏
  • 举报
回复
没写过go语句 给个我写的你看看`

ALTER PROCEDURE HR_CreateInsurancePolicy
@InsurancePolicyNumber varchar(50),
@ContractEfficientDate datetime,
@ContractSignDate datetime,
@AcceptInsuranceDate datetime,
@AcceptDate DateTime,
@ReturnReceiptDate datetime,
@PolicyHolderId int,
@InsurantId int ,
@PayFixed int,
@PayType varchar(50),
@PayPeriods varchar(50),
@PremiumAmount decimal,
@Balance decimal,
@InsuranceAgent varchar(50),
@TollCollector varchar(50),
@Flag varchar(50)
AS
/* */
begin
insert into InsurancePolicy
(
InsurancePolicyNumber ,
ContractEfficientDate,
ContractSignDate,
AcceptDate,
AcceptInsuranceDate,
ReturnReceiptDate,
PolicyHolderId ,
InsurantId ,
PayFixed,
PayType ,
PayPeriods ,
PremiumAmount ,
Balance,
InsuranceAgent ,
TollCollector,
Flag ,
CreationTime,
LastUpdateTime
)
values
(
@InsurancePolicyNumber ,
@ContractEfficientDate,
@ContractSignDate,
@AcceptDate,
@AcceptInsuranceDate,
@ReturnReceiptDate,
@PolicyHolderId ,
@InsurantId ,
@PayFixed,
@PayType ,
@PayPeriods ,
@PremiumAmount ,
@Balance,
@InsuranceAgent ,
@TollCollector ,
@Flag ,
GETDATE(),
GETDATE()
)

SELECT CAST(@@Identity AS INT)

END

SELECT (0)
triffang 2006-06-29
  • 打赏
  • 举报
回复
把GO去掉看看!
New919 2006-06-29
  • 打赏
  • 举报
回复
但是把go去掉了
把所有生成的代码文本粘到查询分析器
执行绝对会报错的
怎么办?
binny0532 2006-06-29
  • 打赏
  • 举报
回复
把GO去掉就行了
nanhaoff 2006-06-29
  • 打赏
  • 举报
回复
存储过程需要go么?
crerate procedure 存储过程名
参数定义
as
执行主体

就这样结构就可以了
francsescoli 2006-06-29
  • 打赏
  • 举报
回复
明摆着是go的问题,将你写的代码生成的Sql语句中的go都去掉.

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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