刚从SQL Server转过来,对oracle一知半解。
请问如下SQL server的写法,oracle如何写?
即先定义变量并赋值之后,查询的sql可以使用该变量。DECLARE @name varchar(20)
SET @name='张三'SELECT * FROM TableName WHERE  NAME=@name谢谢

解决方案 »

  1.   


    declare
    v_name varchar2(20) := '张三';
    begin
    select * from tablename where name = v_name;
    end;
     
      

  2.   

    DECLARE
        V_NAME   EMP.name%TYPE := '张三';
        SQL_STMT VARCHAR2(300);
    BEGIN
        SQL_STMT := 'SELECT * FROM tableName WHERE name=:1';
        EXECUTE IMMEDIATE SQL_STMT
            USING V_NAME;
    END;
      

  3.   

    DECLARE
     a  number :=10;
    BEGIN
      dbms_output.put_line(a+10);
    END;
      

  4.   

    DECLARE
      sql_stmt  VARCHAR2(200);
      emp_id    NUMBER(4) := 1001;
      salary    NUMBER(7, 2);
      dept_id   NUMBER(2) := 6;
      dept_name VARCHAR2(13) := '部门1';
      locations VARCHAR2(13) := '地址1';
      emp_rec   scott%ROWTYPE;
    BEGIN
      EXECUTE IMMEDIATE 'CREATE TABLE bonus4(id NUMBER,amt NUMBER)';
      sql_stmt := 'INSERT INTO dept VALUES (:1,:2,:3)';
      EXECUTE IMMEDIATE sql_stmt
        USING dept_id, dept_name,locations;
      sql_stmt := 'SELECT * FROM  scott where empno= :id';
      EXECUTE IMMEDIATE sql_stmt  INTO emp_rec
        USING emp_id;
      sql_stmt := 'UPDATE scott SET sal= 2000 WHERE empno=:1
         RETURN  sal INTO :2';
      EXECUTE IMMEDIATE sql_stmt USING emp_id RETURNING INTO salary;  EXECUTE IMMEDIATE 'DELETE FROM dept WHERE deptno =:num'
        USING dept_id;END;
      

  5.   


    额不好意思oracle的块中是不能用select的。。只能用select into 或者动态语句,你可以查询之后into一个记录类型,然后输出记录数据。
      

  6.   

    DECLARE
        V_NAME   EMP.name%TYPE := '张三';
        SQL_STMT VARCHAR2(300);
    BEGIN
        SQL_STMT := 'SELECT * FROM tableName WHERE name=:1';
        EXECUTE IMMEDIATE SQL_STMT
            USING V_NAME;
    END;
      

  7.   

    使用declare定义变量