日期:2014-05-17  浏览次数:20703 次

Oracle类型的SQL语句问题
string strSql = "INSERT INTO _TableName(ID,MYNAME) VALUES (:ID,:MYNAME); select max(ID) from _TableName";
这个SQL只能执行其中的一个,要么就添加、要么就查询,直接执行这条SQL就不行,无法识别;。SqlServer是可以的,请问Oracle的该怎么写?

------解决方案--------------------
两个语句一起执行只能写个过程,
但是过程里面不能直接select xxx from yyy,必须select xxx into zzz from yyy;

例如:

SQL code
tony@ORCL1> create table tmp(id int, val int);

Table created.

tony@ORCL1> declare v int; begin insert into tmp values(1,1); select max(val) into v from tmp; end;
  2  /

PL/SQL procedure successfully completed.

------解决方案--------------------
declare 
v_id number(2);
v_name varchar2(3);
v_sql varchar2(256);
begin

select max(ID) into v_id from TableName;

v_name := 'xxx';

v_sql := 'insert into TableName(ID,MYNAME) values (:1,:2)';
execute immediate v_sql using v_id,v_name;
commit;
end;