public int AddRole(TAIS.Model.Privilege.RoleInfo role)
{
string sql = "DECLARE
num number := 0;
begin
select count(*)
into num
from irole
where RoleName = :RoleName
and GroupId = :GroupId;
if num = 0 then
insert into IRole
(RoleID, RoleName, GroupId, CreateTime, UpdateTime, Description)
values
(IROLESEQ.NEXTVAL,
:RoleName,
:GroupID,
:CreateTime,
:UpdateTime,
:Description);
else
return;
end if;
end; ";
OracleParameter[] paras = {
new OracleParameter(":RoleName", role.RoleName),
new OracleParameter(":GroupID", role.GroupID),
new OracleParameter(":CreateTime", DateTime.Now),
new OracleParameter(":UpdateTime", DateTime.Now),
new OracleParameter(":Description", role.Description)};
try
{
int result = DBUtility.OracleHelper.ExecuteNonQuery(con, CommandType.Text, sql, paras);
return result;
}
catch (Exception e)
{
throw new ApplicationException(e.Message); }
}执行insert into时返回1,不执行insert into时不想让他返回1;但现在都是返回1;不知怎么解决,恳请大哥大姐指点迷津,小弟唯有以分和仰慕之情向谢.谢谢,在线等,恩
create or replace procedure aaaa( p_RoleName varchar2,
p_GroupID varchar2,
p_CreateTime varchar2,
p_UpdateTime varchar2,
p_Description varchar2,
p_RETURN IN out integer) as
num number := 0;
begin
p_RETURN:=0;
select count(*)
into num
from irole
where RoleName = P_RoleName
and GroupId = P_GroupId;
if num = 0 then
p_RETURN:=1;
insert into IRole
(RoleID, RoleName, GroupId, CreateTime, UpdateTime, Description)
values
(IROLESEQ.NEXTVAL,
P_RoleName,
P_GroupID,
P_CreateTime,
P_UpdateTime,
P_Description);
else
return ;
end if;
end aaaa; 程序再调用过程
p_GroupID varchar2,
p_CreateTime varchar2,
p_UpdateTime varchar2,
p_Description varchar2,
p_RETURN IN out integer) as
num number := 0;
begin
p_RETURN:=0;
select count(*)
into num
from irole
where RoleName = P_RoleName
and GroupId = P_GroupId;
if num = 0 then
p_RETURN:=1;
insert into IRole
(RoleID, RoleName, GroupId, CreateTime, UpdateTime, Description)
values
(IROLESEQ.NEXTVAL,
P_RoleName,
P_GroupID,
P_CreateTime,
P_UpdateTime,
P_Description);
end if;
commit;
end aaaa;
ORA-06550:
PLS-00103: Encountered the symbol "" when expecting one of the following:
:= . ( @ % ;The symbol "" was ignored.小弟愚钝,还望大哥耐心赐教,小弟唯有以分向谢,谢谢;在线等您
CREATE OR REPLACE PROCEDURE TEST_PROC(P_ROLENAME VARCHAR2,
P_GROUPID VARCHAR2,
P_CREATETIME VARCHAR2,
P_UPDATETIME VARCHAR2,
P_DESCRIPTION VARCHAR2,
P_RETURN OUT NUMBER) AS
NUM NUMBER := 0;
BEGIN
P_RETURN := 0;
SELECT COUNT(*)
INTO NUM
FROM IROLE
WHERE ROLENAME = P_ROLENAME
AND GROUPID = P_GROUPID;
IF NUM = 0 THEN
INSERT INTO IROLE
(ROLEID, ROLENAME, GROUPID, CREATETIME, UPDATETIME, DESCRIPTION)
VALUES
(IROLESEQ.NEXTVAL,
P_ROLENAME,
P_GROUPID,
P_CREATETIME,
P_UPDATETIME,
P_DESCRIPTION);
COMMIT;
P_RETURN := 1;
END IF;END TEST_PROC;
建议建议换个思路
你再sql段写个返回值,如果插入了返回1,未插入返回0
再你的java抛出异常那段做判断 if 返回值=1 then return 1
java:
public static void main(String[] args) {
String user = "SCOTT";
String password = "TIGER";
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@192.168.1.229:1521:orcl"; try {
Class.forName(driver).newInstance();
Connection conn = DriverManager.getConnection(url, user, password); conn.setAutoCommit(false);
CallableStatement cstat = conn
.prepareCall("{ call scott.aaaa(?,?,?,?,?,?) }");
cstat.setString(1, "12");
cstat.setString(2, "12");
cstat.setString(3, "12");
cstat.setString(4, "12");
cstat.setString(5, "12");
cstat.registerOutParameter(6, Types.INTEGER);// Types.OTHER); cstat.execute(); int x = cstat.getInt(6); System.out.println(x); cstat.close();
conn.close(); } catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} }oracle的存储过程:
create or replace procedure aaaa( p_RoleName varchar2,
p_GroupID varchar2,
p_CreateTime varchar2,
p_UpdateTime varchar2,
p_Description varchar2,
p_RETURN IN out integer) as
num number := 0;
begin
p_RETURN:=0;
select count(*)
into num
from irole
where RoleName = P_RoleName
and GroupId = P_GroupId;
if num = 0 then
p_RETURN:=1;
insert into IRole
(RoleID, RoleName, GroupId, CreateTime, UpdateTime, Description)
values
(IROLESEQ.NEXTVAL,
P_RoleName,
P_GroupID,
P_CreateTime,
P_UpdateTime,
P_Description);
else
return ;
end if;
commit;
end aaaa;