刚从SQL Server转过来,对oracle一知半解。
请问如下SQL server的写法,oracle如何写?
即先定义变量并赋值之后,查询的sql可以使用该变量。DECLARE @name varchar(20)
SET @name='张三'SELECT * FROM TableName WHERE NAME=@name谢谢
请问如下SQL server的写法,oracle如何写?
即先定义变量并赋值之后,查询的sql可以使用该变量。DECLARE @name varchar(20)
SET @name='张三'SELECT * FROM TableName WHERE NAME=@name谢谢
declare
v_name varchar2(20) := '张三';
begin
select * from tablename where name = v_name;
end;
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;
a number :=10;
BEGIN
dbms_output.put_line(a+10);
END;
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;
额不好意思oracle的块中是不能用select的。。只能用select into 或者动态语句,你可以查询之后into一个记录类型,然后输出记录数据。
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;