zhanghb2 发表于 2010-10-19 15:13:18

在sql server可以,在MySQL不行

请教各位大牛,下面一段sql在sql server上可以执行,但是在MySQL5.1上却不行,
create table gkcf (
    KSH CHAR(14) not null,
    KHCHAR(9) not null,
    XMCHAR(9) not null,
    KM1 INT,
    KM2 INT,
    KM3 INT,
    KM4 INT,
    KM5 INT,
    ZFINT )
go   
create PROCEDURE PROC_MAKEGKCF
(
    @start INT,
    @stopINT   
)
begin
    declare @cur INT
   
    declare @km1 int
    declare @km2 int
    declare @km3 int
    declare @km4 int
    declare @km5 int
   
    declare @zf int
   
    Select @cur=@start
    While @cur<=@stop
    begin
      Select @km1=CONVERT(INT,RAND()*100)
      Select @km2=CONVERT(INT,RAND()*100)
      Select @km3=CONVERT(INT,RAND()*100)
      Select @km4=CONVERT(INT,RAND()*100)
      Select @km5=CONVERT(INT,RAND()*100)
      Select @zf=@km1+@km2+@km3+@km4+@km5
      insert into gkcf values(CONVERT(CHAR(14), @cur),CONVERT(CHAR(9), @cur),'测试',@km1,@km2,@km3,@km4,@km5,@zf)
      Select @cur=@cur+1
    end
end
gocreate UNIQUE index gkcf_index on gkcf (KSH)
goPROC_MAKEGKCF 1,100000
go

报错是:Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'go   
create PROCEDURE PROC_MAKEGKCF
(
    @start INT,
    @stopINT   
) TYPE' at line 11
(0 ms taken)

第十一行就是第一个go那一行

kider 发表于 2010-10-19 16:11:44

有些是不通用的,是不能直接用,需要转换。

mysql中没有go,用";"代替go

社区有其他帖子可以参考的

zhanghb2 发表于 2010-10-19 16:49:23

回复 kider 的帖子

我改了还是不行,高手能否帮我写一个。我的程序是先创建一张表,然后用随机方法往表里填充数据。不甚感激~~

kider 发表于 2010-10-20 09:27:14

改成什么样了?

zhanghb2 发表于 2010-10-20 15:06:04

回复 kider 的帖子

把所有 go 换成了分号而且很奇怪,MySQL每一条独立语句要加一个分号,但是我每加一个分号就有一个报错

kider 发表于 2010-10-20 17:18:02

需要转换很多:
http://www.mysqlpub.com/forum.php?mod=forumdisplay&fid=30
页: [1]
查看完整版本: 在sql server可以,在MySQL不行