获取名字?
CREATE OR REPLACE FUNCTION GETName(p_id in number) RETURN varchar2 IS
v_name varchar2(100);
BEGIN
select max(name) INTO V_NAME from A where id=p_id;
RETURN V_NAME;
END;

解决方案 »

  1.   

    你好,由于以前是用SQL SEVER做报表的,以前的SQL只要直接定义一个@变量就可以,现在ORACLE里面这样写不行(ORACLE小白),不知道大神用过REPROT BUILDER没,我就是想知道在ORACLE传变量怎样传而已,谢谢
      

  2.   

    oracle reports builder?
    这个工具从对象导航器可以直接创建参数的
    如创建的参数P_A
    在写查询语句时可以直接用:P_A访问参数的值
      

  3.   

    不是。微软那个report buider 2.0
      

  4.   

    那个没用过,oracle有这样一种用法
    %rowtype 和 %type,觉得你这个里面可能用得到,
    你自己百度下吧
      

  5.   


    CREATE OR REPLACE PROCEDURE SP_STU(IDNO IN NUMBER)
    AS
    STU_NAME VARCHAR2(32);
    BEGIN 
    SELECT NAME INTO STU_NAME FROM STU WHERE NO=IDNO;
    DBMS_OUTPUT.put_line(STU_NAME); 
    END;
    使用存储过程,可将name值输出。
    函数可以在调用的时候获得结果,如下:
    CREATE FUNCTION FN_STU(IDNO IN NUMBER)RETURN varchar2
    AS
    STU_NAME VARCHAR2(32);
    BEGIN 
    SELECT NAME INTO STU_NAME FROM STU WHERE NO=IDNO;
    RETURN(STU_NAME);
    END;
    select fn_stu(3) from dual;
      

  6.   

    创建一个存储过程,name为输出参数
    CREATE OR REPLACE PROCEDURE SP_XXX(T_ID IN NUMBER , T_NAME OUT VARCHAR2)
    IS
    BEGIN
    SELECT NAME INTO T_NAME FROM STUDENTS WHERE ID=T_ID;
    END;
    调用存储过程,打印nameDECLARE 
    ID STUDENTS.ID%TYPE:=1;
    NAME STUDENTS.NAME%TYPE;--定义一个和students中name列类型相同的变量
    BEGIN 
    SP_XXX(ID,NAME);
    DBMS_OUTPUT.put_line(NAME);--打印name信息
    END;
    函数就不在演示了