string sql = "delete TB_USER_ROLE_PREMISSION where ROLE_ID='" + roleId + "'";
for (int i = 0; i < this.ckPermission.Items.Count; i++)
{
if (this.ckPermission.Items[i].Selected)
{
//sql += " insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(" + roleId + "," + this.ckPermission.Items[i].Value + ")";
}
}在oracle中我用了这样的sql语句,跟踪的语句如下:delete TB_USER_ROLE_PREMISSION where ROLE_ID='6'insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID) values('6','1001')insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID) values('6','2001')insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID) values('6','3001')insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID) values('6','4001')现在报的错误是Message = "ORA-00933: SQL 命令未正确结束\n"望大狭们指点下,错在那里??
for (int i = 0; i < this.ckPermission.Items.Count; i++)
{
if (this.ckPermission.Items[i].Selected)
{
//sql += " insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(" + roleId + "," + this.ckPermission.Items[i].Value + ")";
}
}在oracle中我用了这样的sql语句,跟踪的语句如下:delete TB_USER_ROLE_PREMISSION where ROLE_ID='6'insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID) values('6','1001')insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID) values('6','2001')insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID) values('6','3001')insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID) values('6','4001')现在报的错误是Message = "ORA-00933: SQL 命令未正确结束\n"望大狭们指点下,错在那里??
哪里多了个换行符
{
//sql += " ; insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(" + roleId + "," + this.ckPermission.Items[i].Value + ")";
}
试一下!
----------
这被视为一句...“'6'insert”是无效字符...
delete TB_USER_ROLE_PREMISSION where ROLE_ID='6'; insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(6,1001); insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(6,9999)
报的错误是Message = "ORA-00911: 无效字符\n"??
string sql = "delete TB_USER_ROLE_PREMISSION where ROLE_ID='" + roleId + "';";
for (int i = 0; i < this.ckPermission.Items.Count; i++)
{
if (this.ckPermission.Items[i].Selected)
{
sql += " insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(" + roleId + "," + this.ckPermission.Items[i].Value + ");";
}
}试试这样
跟出的结果
delete TB_USER_ROLE_PREMISSION where ROLE_ID='6'; insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(6,1001) insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(6,6006) insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(6,6007) insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(6,9999)
报的错仍然是ORA-00911: 无效字符
string sql = "delete TB_USER_ROLE_PREMISSION where ROLE_ID='" + roleId + "'";
for (int i = 0; i < this.ckPermission.Items.Count; i++)
{
if (this.ckPermission.Items[i].Selected)
{
sql += "; insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values('" + roleId + "','" + this.ckPermission.Items[i].Value + "')";
}
} 如果TB_USER_ROLE_PREMISSION表中ROLE_ID和ROLE_PID字段都为字符型,正确形式应该是:
delete TB_USER_ROLE_PREMISSION where ROLE_ID='6'; insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values('6','1001'); insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values('6','6006')
还有如楼上所说的,如果是字符型的话要'"+FSD+"'
insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID) values('6','2001')
insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID) values('6','3001')
insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID) values('6','4001') Oracle在一个语句里面不能同时执行两个以上语句,这是和sqlserver不同的地方Mapper.BeginTran..
try
{
Mapper.delete..
for (int i=0;i<4;i++)
{
Mapper.Insert...
}
Mapper.Comm...
}
catch()
{
Mapper.RoolBack...
}参考FortuneBase中的写法
参考地址www.cnblogs.com/mail-ricklee
这个错误是微软的搞笑之处,其实是遇到了分号造成的,微软在操作Oracle的时候,不允许出现分号,它不会把分号解释为分隔符,只会理解为一般的字符,而作为一般字符又无法理解它的含义,最后就抛出了“无效字符”的异常了。
报的错误是:ORA-06550: 第 1 行, 第 264 列: PLS-00103: 出现符号 "end-of-file"在需要下列之一时: ; 符号 ";" 被替换为 "end-of-file" 后继续。
begin delete TB_USER_ROLE_PREMISSION where ROLE_ID=6 insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(6,1001) insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(6,6004) insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(6,9999) end
报的错误又是
ORA-06550: 第 1 行, 第 54 列: PL/SQL: ORA-00933: SQL 命令未正确结束 ORA-06550: 第 1 行, 第 7 列: PL/SQL: SQL Statement ignored ORA-06550: 第 1 行, 第 260 列: PLS-00103: 出现符号 "end-of-file"在需要下列之一时: