各位好,麻烦帮忙看看这个sqlserver下是这样写:------------------------------------
--用途:数据库记录是否已经存在
------------------------------------
CREATE PROCEDURE SYSTEMCODE_Exists
@Code_ID int
AS
DECLARE @TempID int
SELECT @TempID = count(1) FROM SYSTEMCODE WHERE Code_ID = @Code_ID
IF @TempID = 0
RETURN 0
ELSE
RETURN 1
go我在Oracle这样写就报错CREATE OR REPLACE PROCEDURE SYSTEMCODE_EXISTS (
CODELB_in VARCHAR2
)
AS
TempID Number;
BEGIN
SELECT count(1) into TempID FROM SYSTEMCODE
WHERE CODELB = CODELB_in;
IF TempID = 0 then
RETURN 0;
ELSE
RETURN 1;
end IF;
END;编译错误:
行号= 11 列号= 3 错误文本= PLS-00372: 在一个过程中, RETURN 语句无法包含表达式
行号= 11 列号= 3 错误文本= PL/SQL: Statement ignored
行号= 13 列号= 3 错误文本= PLS-00372: 在一个过程中, RETURN 语句无法包含表达式
行号= 13 列号= 3 错误文本= PL/SQL: Statement ignored
--用途:数据库记录是否已经存在
------------------------------------
CREATE PROCEDURE SYSTEMCODE_Exists
@Code_ID int
AS
DECLARE @TempID int
SELECT @TempID = count(1) FROM SYSTEMCODE WHERE Code_ID = @Code_ID
IF @TempID = 0
RETURN 0
ELSE
RETURN 1
go我在Oracle这样写就报错CREATE OR REPLACE PROCEDURE SYSTEMCODE_EXISTS (
CODELB_in VARCHAR2
)
AS
TempID Number;
BEGIN
SELECT count(1) into TempID FROM SYSTEMCODE
WHERE CODELB = CODELB_in;
IF TempID = 0 then
RETURN 0;
ELSE
RETURN 1;
end IF;
END;编译错误:
行号= 11 列号= 3 错误文本= PLS-00372: 在一个过程中, RETURN 语句无法包含表达式
行号= 11 列号= 3 错误文本= PL/SQL: Statement ignored
行号= 13 列号= 3 错误文本= PLS-00372: 在一个过程中, RETURN 语句无法包含表达式
行号= 13 列号= 3 错误文本= PL/SQL: Statement ignored
解决方案 »
- 用sqldeveloper创建表,表中的列不能修改
- Oracle Apex不能通过浏览器打开主页
- 请教一个数据库设计的问题(很简单的),大家帮帮忙
- 新人求助
- 有oracle 数据库级 触发器编程资料吗?
- 想存储500个汉字左右的信息,用什么字段好?
- 数据库导入问题
- Windows下oracle9i导出数据表提示”作业成功提交"但是指定的位置什么都没有,包括日志文件也没有!!why?!!
- 817中在那里可以创建资料档案库,即我想使用oms。谢谢!
- 关于OCIEnvCreate()多线程初始化的模式问题
- 请问oracle中两个字段相除结果能否用百分数显示保留两位小数,并且以该结果排序
- 讨论一个查询优化的算法
CODELB_in VARCHAR2,
count_row out number(2)
)
AS
TempID Number;
BEGIN
SELECT count(1) into TempID FROM SYSTEMCODE
WHERE CODELB = CODELB_in;
IF TempID = 0 then
count_row := 0;
ELSE
count_row := 1;
end IF;
END;oracle中可以定义一个out参数返回
CODELB_in VARCHAR2
)
RETURN NUMBER
AS
TempID Number;
RETURN
BEGIN
SELECT count(1) into TempID FROM SYSTEMCODE
WHERE CODELB = CODELB_in;
IF TempID = 0 then
RETURN 0;
ELSE
RETURN 1;
end IF;
END;
AS
TempID Number;
BEGIN
SELECT count(*) into TempID FROM SYSTEMCODE WHERE CODELB = CODELB_in; IF TempID = 0 then
RETURN 0;
ELSE
RETURN 1;
end IF;
END;
CODELB_in VARCHAR2,
count_row out number
)
AS
TempID Number(2);
BEGIN
SELECT count(1) into TempID FROM SYSTEMCODE
WHERE CODELB = CODELB_in;
IF TempID = 0 then
count_row := 0;
ELSE
count_row := 1;
end IF;
END;
你在试试,当然写成函数也是可以的
不好意思,
你把定义的那个count_row out number(2)改成count_row out number应该就可以了
我在c#页面调用时候,出错了,应该怎么才是正确的了,实在不好意思,我太菜鸟了,向各位大师学习!
//是否已经存在
public bool Exists(string CodeLb, string CodeValue)
{
System.Data.Common.DbCommand sqlCommand = db.GetStoredProcCommand("SYSTEMCODE_EXISTS");
db.AddInParameter(sqlCommand, "CodeLb_in", DbType.String, CodeLb);
db.AddInParameter(sqlCommand, "CodeValue_in", DbType.String, CodeValue);
db.AddOutParameter(sqlCommand, "count_row", DbType.String, 40); IDataReader dr = db.ExecuteReader(sqlCommand); string result = null;
if (dr.Read())
{
result = dr["TempID"].ToString();
}
dr.Close();
dr.Dispose(); if (string.IsNullOrEmpty(result))
return false;
else
return true;
}ORA-06550: 第 1 行, 第 7 列:
PLS-00306: 调用 'SYSTEMCODE_EXISTS' 时参数个数或类型错误
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OracleClient.OracleException: ORA-06550: 第 1 行, 第 7 列:
PLS-00306: 调用 'SYSTEMCODE_EXISTS' 时参数个数或类型错误
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
<head>
<title>ORA-06550: 第 1 行, 第 7 列: <br>PLS-00306: 调用 'SYSTEMCODE_EXISTS' 时参数个数或类型错误<br>ORA-06550: 第 1 行, 第 7 列: <br>PL/SQL: Statement ignored<br></title>
<style>
body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;}
p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}
b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}
H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }
H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }
pre {font-family:"Lucida Console";font-size: .9em}
.er {font-weight: bold; color: black;text-decoration: none;}
.version {color: gray;}
.error {margin-bottom: 10px;}
.expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }
</style>
</head> <body bgcolor="white"> <span><H1>“/FTWeb”应用程序中的服务器错误。<hr width=100% size=1 color=silver></H1> <h2> <i>ORA-06550: 第 1 行, 第 7 列: <br>PLS-00306: 调用 'SYSTEMCODE_EXISTS' 时参数个数或类型错误<br>ORA-06550: 第 1 行, 第 7 列: <br>PL/SQL: Statement ignored<br></i> </h2></span> <font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif "> <b> 说明: </b>执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 <br><br> <b> 异常详细信息: </b>System.Data.OracleClient.OracleException: ORA-06550: 第 1 行, 第 7 列: <br>PLS-00306: 调用 'SYSTEMCODE_EXISTS' 时参数个数或类型错误<br>ORA-06550: 第 1 行, 第 7 列: <br>PL/SQL: Statement ignored<br><br><br> <b>源错误:</b> <br><br> <table width=100% bgcolor="#ffffcc">
<tr>
<td>
<code><pre>行 112: db.AddOutParameter(sqlCommand, "count_row", DbType.String, 40);
行 113:
<font color=red>行 114: IDataReader dr = db.ExecuteReader(sqlCommand);
</font>行 115:
行 116: string result = null;</pre></code> </td>
</tr>
</table> <br> <b> 源文件: </b> E:\www\FFT\DAL\SystemManage\SystemCodeDAL.cs<b> 行: </b> 114
<br><br> <b>堆栈跟踪:</b> <br><br> <table width=100% bgcolor="#ffffcc">
<tr>
<td>
<code><pre>[OracleException (0x80131938): ORA-06550: 第 1 行, 第 7 列:
PLS-00306: 调用 'SYSTEMCODE_EXISTS' 时参数个数或类型错误
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
]
System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc) +203
System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals) +1018
System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, ArrayList& resultParameterOrdinals) +25
System.Data.OracleClient.OracleCommand.ExecuteReader(CommandBehavior behavior) +142
System.Data.OracleClient.OracleCommand.ExecuteDbDataReader(CommandBehavior behavior) +4
System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior) +7
Microsoft.Practices.EnterpriseLibrary.Data.Database.DoExecuteReader(DbCommand command, CommandBehavior cmdBehavior) +199
Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteReader(DbCommand command) +113
Microsoft.Practices.EnterpriseLibrary.Data.Oracle.OracleDatabase.ExecuteReader(DbCommand command) +74
FTWeb.DAL.SystemManage.SystemCodeDAL.Exists(String CodeLb, String CodeValue) in E:\www\FFT\DAL\SystemManage\SystemCodeDAL.cs:114
FTWeb.BLL.SystemManage.SystemCodeBLL.Add(SystemCodeModel Model) in E:\www\FFT\BLL\SystemManage\SystemCodeBLL.cs:21
SystemManage_SystemCodeAdd.btn_OK_Click(Object sender, ImageClickEventArgs e) in e:\www\FFT\FTWeb\SystemManage\SystemCodeAdd.aspx.cs:55
System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e) +105
System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(String eventArgument) +115
System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5102
</pre></code> </td>
</tr>
</table> <br> <hr width=100% size=1 color=silver> <b>版本信息:</b> Microsoft .NET Framework 版本:2.0.50727.42; ASP.NET 版本:2.0.50727.42 </font> </body>
</html>
code]
“/FastTraceWeb”应用程序中的服务器错误。
--------------------------------------------------------------------------------ORA-06550: 第 1 行, 第 7 列:
PLS-00306: 调用 'SYSTEMCODE_EXISTS' 时参数个数或类型错误
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OracleClient.OracleException: ORA-06550: 第 1 行, 第 7 列:
PLS-00306: 调用 'SYSTEMCODE_EXISTS' 时参数个数或类型错误
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
源错误:
行 112: db.AddOutParameter(sqlCommand, "count_row", DbType.String, 40);
行 113:
行 114: IDataReader dr = db.ExecuteReader(sqlCommand);
行 115:
行 116: string result = null;
源文件: E:\www\FastTrace\DAL\SystemManage\SystemCodeDAL.cs 行: 114 堆栈跟踪:
[OracleException (0x80131938): ORA-06550: 第 1 行, 第 7 列:
PLS-00306: 调用 'SYSTEMCODE_EXISTS' 时参数个数或类型错误
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
]
System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc) +203
System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals) +1018
System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, ArrayList& resultParameterOrdinals) +25
System.Data.OracleClient.OracleCommand.ExecuteReader(CommandBehavior behavior) +142
System.Data.OracleClient.OracleCommand.ExecuteDbDataReader(CommandBehavior behavior) +4
System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior) +7
Microsoft.Practices.EnterpriseLibrary.Data.Database.DoExecuteReader(DbCommand command, CommandBehavior cmdBehavior) +199
Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteReader(DbCommand command) +113
Microsoft.Practices.EnterpriseLibrary.Data.Oracle.OracleDatabase.ExecuteReader(DbCommand command) +74
FastTraceWeb.DAL.SystemManage.SystemCodeDAL.Exists(String CodeLb, String CodeValue) in E:\www\FastTrace\DAL\SystemManage\SystemCodeDAL.cs:114
FastTraceWeb.BLL.SystemManage.SystemCodeBLL.Add(SystemCodeModel Model) in E:\www\FastTrace\BLL\SystemManage\SystemCodeBLL.cs:21
SystemManage_SystemCodeAdd.btn_OK_Click(Object sender, ImageClickEventArgs e) in e:\www\FastTrace\FastTraceWeb\SystemManage\SystemCodeAdd.aspx.cs:55
System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e) +105
System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(String eventArgument) +115
System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5102
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.42; ASP.NET 版本:2.0.50727.42