把下面的查询语句写成存储过程 SELECT ID,NAME,SEX,AGE,ADDRESS FROM USERINFO where address=上海 谢谢各位大侠了 ........

解决方案 »

  1.   

    create or replace procedure aa(address varchar2) is
    begin
      SELECT ID,NAME,SEX,AGE,ADDRESS FROM USERINFO where address = :address; 
    end aa;
      

  2.   

    create or replace procedure pd_test
    (address  varchar2)
    as
    str_sql varchar2(1000);
    begin
      str_sql:='select ID,NAME,SEX,AGE,ADDRESS from USERINFO where address ='||address||'';
    execute immediate str_sql;
    end;
    注意其中你的参数类型要与表中的设计一致
      

  3.   


    create table userinfo(
    id number(18,0),
    name varchar2(10),
    sex char(4),
    age number(18,0),
    address varchar2(50)
    );INSERT INTO userinfo VALUES(1,'luoyoumou','男',24,'北京朝阳');CREATE OR REPLACE PACKAGE userinfo_pkg
    AS
      TYPE myrctype IS REF CURSOR;
      PROCEDURE userinfo_proc(i_address IN VARCHAR2, p_rc OUT myrctype);
    END userinfo_pkg;
    /CREATE OR REPLACE PACKAGE BODY userinfo_pkg
    AS
      PROCEDURE userinfo_proc(i_address IN VARCHAR2, p_rc OUT myrctype)
      IS
        sqlstr VARCHAR2(1000);
      BEGIN
        sqlstr := 'SELECT ID, NAME, SEX, AGE, ADDRESS FROM USERINFO WHERE address = :i_address';
        open p_rc for sqlstr using i_address;
      END userinfo_proc;
    END userinfo_pkg;
    /
      

  4.   

    各位大侠 小弟刚接触Oracle 对里面的语法不是很明白  能否写上注释 真心的谢谢了.......
      

  5.   


    create or replace procedure aa(vaddress varchar2, cur out sys_refcursor) is
    begin
      open cur for
      SELECT ID,NAME,SEX,AGE,ADDRESS FROM USERINFO where address = vaddress; 
    end aa;
      

  6.   

    create table userinfo(
    id number(18,0),
    name varchar2(10),
    sex char(4),
    age number(18,0),
    address varchar2(50)
    );INSERT INTO userinfo VALUES(1,'luoyoumou','男',24,'北京朝阳');
    INSERT INTO userinfo VALUES(1,'zhangtao','男',35,'上海');CREATE OR REPLACE PACKAGE userinfo_pkg
    AS
      TYPE myrctype IS REF CURSOR;
      PROCEDURE userinfo_proc(i_address IN VARCHAR2, p_rc OUT myrctype);
    END userinfo_pkg;
    /CREATE OR REPLACE PACKAGE BODY userinfo_pkg
    AS
      PROCEDURE userinfo_proc(i_address IN VARCHAR2, p_rc OUT myrctype)
      IS
        sqlstr VARCHAR2(1000);
      BEGIN
        sqlstr := 'SELECT ID, NAME, SEX, AGE, ADDRESS FROM USERINFO WHERE address = :i_address';
        open p_rc for sqlstr using i_address;
      END userinfo_proc;
    END userinfo_pkg;
    /-------------------------- 测试: -------------------------------------
    set serveroutput on;
    var p_rc refcursor;
    exec userinfo_pkg.userinfo_proc('上海',:p_rc);
    print p_rc;
      

  7.   

    create or replace procedure pd_test
    (address  varchar2)
    as
    str_sql varchar2(1000);
    begin
      str_sql:='select ID,NAME,SEX,AGE,ADDRESS from USERINFO where address ='||address||'';
    execute immediate str_sql;
    end;1,2楼的都错误!
    应该把查询出来的结果集用游标或集合类型存储起来。
      

  8.   

    CREATE OR REPLACE PROCEDURE userinfo_proc(i_address VARCHAR2, o_cur OUT SYS_REFCURSOR)
    IS
      sqlstr VARCHAR2(200);
    BEGIN
      sqlstr := 'SELECT Id, Name, Sex, Age, Address FROM userinfo WHERE Address = :i_address';
      OPEN o_cur FOR sqlstr USING i_address;
    END;
    /
      

  9.   

    谢谢的各位的回答  有的地方我看不懂 请各位麻烦加一下注释 感谢了......另外他别的感谢 luoyoumou的多次回答 谢谢......
      

  10.   

    -- i_address 是存储过程的输入参数,o_cur是存储过程的输出游标参数,用以获取返回的结果集!
    CREATE OR REPLACE PROCEDURE userinfo_proc(i_address VARCHAR2, o_cur OUT SYS_REFCURSOR)
    IS
      sqlstr VARCHAR2(200); -- 定义变量,用以存放SQL语句
    BEGIN
      sqlstr := 'SELECT Id, Name, Sex, Age, Address FROM userinfo WHERE Address = :i_address'; -- 给SQL变量赋值,其中 :i_address 是绑定变量,以提高执行效率!
      OPEN o_cur FOR sqlstr USING i_address; -- 给游标变量赋值
    END;
    /-- 解释不太正确的地方请原谅!