存储过程 BEGIN 
DECLARE @test VARCHAR(1000)SET @test = SELECT  SUBSTRING(A,4,6) FROM T WHERE A='123123'PRINT @testEND
sql 语句为 SELECT top 1 SUBSTRING(A,4,6) FROM T WHERE A like '123123%'都是报incorrect syntax near the keyword 'select'这个错,麻烦大家给看一下。
包括int 类型的赋值。
set @aa = 2
这样不对吗?存储过程

解决方案 »

  1.   

    你确定你问的是 oracle??!!!oracle没有top和substring的
      

  2.   

    第一
    oracle 没有top  
    sql里面有第2
    substring也不对 !
    只是substr(字符,从第几位截取,截取几位)
      

  3.   

    你放到sql server 里面执行就不会报错了
      

  4.   

    oracle用where rownum=1
    你这个语法不是oracle的
      

  5.   

    确实不是oracle的,是sqlserver的
      

  6.   


    这语法明显不是Oracle,应该是楼主发错版块了。
      

  7.   


    虽然我的sqlserver也是半吊子,但 你这个赋值明显是可以看出有问题的。。BEGIN 
    DECLARE @test VARCHAR(1000)SELECT   @test =SUBSTRING(A,4,6) FROM T WHERE A='123123'PRINT @testEND
    sqlserver中select赋值,即使 一个select查出多行,也不会像oracle中一样报返回多个值的错误,它会取最后一条为准。当然加了top 1 在效率上会提高不少了。