DECLARE
sql_stmt VARCHAR2(200);
emp_id NUMBER(4) := 7566;
emp_rec emp%ROWTYPE;
BEGIN
EXECUTE IMMEDIATE
'CREATE TABLE bonus1 (id NUMBER, amt NUMBER)'; sql_stmt := 'SELECT * FROM emp WHERE empno = :id';
EXECUTE IMMEDIATE sql_stmt INTO emp_rec USING emp_id;
END;
这段代码,
sql_stmt不是一个varchar2类型的变量么,怎么去等于了一行,一个对象?
sql_stmt := 'SELECT * FROM emp WHERE empno = :id';
动态SQ只是不可以用DDL命令和会话控制,为什么
EXECUTE IMMEDIATE sql_stmt INTO emp_rec USING emp_id;
这里也要用execute immediate
这个是不是就是把sql_stmt放到对象emp_rec中?
为什么这么写?还用个using。
sql_stmt VARCHAR2(200);
emp_id NUMBER(4) := 7566;
emp_rec emp%ROWTYPE;
BEGIN
EXECUTE IMMEDIATE
'CREATE TABLE bonus1 (id NUMBER, amt NUMBER)'; sql_stmt := 'SELECT * FROM emp WHERE empno = :id';
EXECUTE IMMEDIATE sql_stmt INTO emp_rec USING emp_id;
END;
这段代码,
sql_stmt不是一个varchar2类型的变量么,怎么去等于了一行,一个对象?
sql_stmt := 'SELECT * FROM emp WHERE empno = :id';
动态SQ只是不可以用DDL命令和会话控制,为什么
EXECUTE IMMEDIATE sql_stmt INTO emp_rec USING emp_id;
这里也要用execute immediate
这个是不是就是把sql_stmt放到对象emp_rec中?
为什么这么写?还用个using。
这句话我猜测是不是就是一个字符串存放到sql_stmt中。
但是where后面为什么是where empno =: id而不是wheren empno = id
sql_stmt INTO emp_rec USING emp_id;
拼起来就是:'SELECT * FROM emp WHERE empno = :id' INTO emp_rec USING emp_id;‘