解决方案 »

  1.   

    DECLARE
    STB_REC STB%ROWTYPE;
     DOC_TYEP VARCHAR2(20) :='R';
    A VARCHAR(20) :='D';
    BEGIN
    IF DOC_TYEP=A THEN
     SELECT * INTO STB_REC FROM STB WHERE DR_TYPE='R'
     ELSE  
     SELECT * INTO STB_REC FROM STB WHERE DR_TYPE='D'
     end
      

  2.   

    DECLARE
    STB_REC STB%ROWTYPE;
     DOC_TYEP VARCHAR2(20) :='R';
    A VARCHAR(20) :='D';
    BEGIN
    IF DOC_TYEP=A THEN
     SELECT * INTO STB_REC FROM STB WHERE DR_TYPE='R'
     ELSE  
     SELECT * INTO STB_REC FROM STB WHERE DR_TYPE='D'
     end我主要是用于书写erp软件的报表,但是你是将结果插入到STB_REC 里边的了,而我报表还是没法呈现查询的内容的哦。
      

  3.   

    DECLARE
    STB_REC STB%ROWTYPE;
     DOC_TYEP VARCHAR2(20) :='R';
    A VARCHAR(20) :='D';
    BEGIN
    IF DOC_TYEP=A THEN
     SELECT * INTO STB_REC FROM STB WHERE DR_TYPE='R'
     ELSE  
     SELECT * INTO STB_REC FROM STB WHERE DR_TYPE='D'
     end我主要是用于书写erp软件的报表,但是你是将结果插入到STB_REC 里边的了,而我报表还是没法呈现查询的内容的哦。
    oracle程序中必须select into,不能够直接select,因为直接这样没法调用。
    你可以直接SQL:
    select * from STB where dr_type=decode(doc_tyep,'A','R','D')
      

  4.   

    DECLARE
    STB_REC STB%ROWTYPE;
     DOC_TYEP VARCHAR2(20) :='R';
    A VARCHAR(20) :='D';
    BEGIN
    IF DOC_TYEP=A THEN
     SELECT * INTO STB_REC FROM STB WHERE DR_TYPE='R'
     ELSE  
     SELECT * INTO STB_REC FROM STB WHERE DR_TYPE='D'
     end
    如果查询到的是多行记录,程序是不是就不太合适了?
      

  5.   

    DECLARE
    STB_REC STB%ROWTYPE;
     DOC_TYEP VARCHAR2(20) :='R';
    A VARCHAR(20) :='D';
    BEGIN
    IF DOC_TYEP=A THEN
     SELECT * INTO STB_REC FROM STB WHERE DR_TYPE='R'
     ELSE  
     SELECT * INTO STB_REC FROM STB WHERE DR_TYPE='D'
     end
    如果查询到的是多行记录,程序是不是就不太合适了?
    对的,查询多条记录会报错,那样最好用游标或者数组