CREATE OR REPLACE Procedure familyoneplus_comm(is_balmon In Char := to_char(Sysdate,'yyyyMM')) As
。。
这里的IN 是干什么用的,是有IN CHAR这个变量类型,还是IN是个修饰CHAR用的?小弟初学oracle,不甚了解。

解决方案 »

  1.   

    in代表is_balmon为传入参数,char是参数类型。:=后面的是参数默认值
      

  2.   

    把in char改为in varchar2,否则你可能遇到麻烦
      

  3.   

    传入参数是啥意思啊。如果拿c里面的函数定义来比较的话,上面那个句子是不是可以写成
    void familyoneplus_comm(char is_balmon = to_char(Sysdate,'yyyyMM')) {

    }
    呢?
    还有,如果不加IN的话,行不行啊?
      

  4.   

    我看sql里面说,char是固定长度的,那这里的CHAR是不是就是长度只有1的char呢,还是他代表了char数组?
      

  5.   

    不加in完全可以,in是默认的
    char is_balmon  ?? no,pl/sql不是什么java,c++,type不能放面量前面
    char是定长的没有错,在pl/sql参数定义中不能加长度,char是字符串,不是数组,长度具有自适应性,最大32767,但是sql从8i后是2000
    使用char,你没有遇到麻烦,等你遇到了就知道了,一时半会说了你也不清楚
      

  6.   

    对了,char跟varchar他俩的区别是不是就只是一个固定分配长度,而另外一个慢慢增长到指定的长度啊?
      

  7.   

    不要拿char和varchar比,他们两个其实都是oracle中的废物,varchar一般不用,都用varchar2
    char更是个废物,他是定长的,它的自动填空格以及比较规则决定他的SQL编写比varchar2的复杂多了,而且char和varchar2混用,那是经常会写错的。
    char与varchar2相比没有一处优势。
    char的性能不比varchar2好,不要相信别人说的什么char按空间换时间的理论,char效率高,那是狗P逻辑,
    他说效率好,你让他测试下给你看看