问题很简单,我能不能在存储过程的
BEGIN  -- 这里声明若干变量END;SQL SERVER可以,因为变量太多了,我不可能都声明在IS 和 BEGIN 的之间.我想问 Oracle 里可不可以。
可以,怎么写?

解决方案 »

  1.   

    为什么不可能?
    如果要在里面声明的话,也只能是在里面增加一个内部块,写在内部块的declare部分
      

  2.   

    DECLARE
    @l_result_id INT, @l_v_lac INT,
    @l_v_ci INT,
    @l_Longitude  INT,
    @l_Latitude   INT,
    @l_Lev INT
    这是我在SQL SERVER里面这样定义的(BEGIN END 之间).大哥给帮忙写成 Oracle 的不,谢啦。在线等
      

  3.   

    不是很熟悉sql server
    begin end间的declare,是内部代码块的声明部分吗
    如果是的话,oracle也一样
    给个例子
    declare
    i number;
    begin
    i:=9;
    for j in 1..i loop
      declare
      m number;
      n number;
      begin
      m:=2;
      n:=3;
      dbms_output.put_line(m*n*j);
      end;
    end loop;
    end;
    内部块中声明的变量只能在内部块中使用
      

  4.   

    其实说白了就是不行,只能在一个块的开始的地方声明,存储过程的is后面或者匿名块的declare部分
    呵呵,我以前也用sql server,所以觉得很郁闷。
      

  5.   

    sql server与oracle的存储过程没有什么区别,很多都一样。完全可以在begin end中间加入声明。如果参数太多,为什么不在存储过程中采用临时变量呢?