SQL Anywhere / ASP.NET - 使用带有输出参数的SQLDataSource

时间:2012-03-28 15:14:56

标签: asp.net sql

我使用的数据库是Sybase的SQL Anywhere。 v 11.0.1

我有以下存储过程来插入一行。一世 使用select语句返回@@ identity变量。

ALTER PROCEDURE "DBA"."Portal_InsertHeader"( in
theimi integer, in theUser long varchar, in
theNextServiceDate date)
RESULT( ident integer )
BEGIN

insert into
InvoiceCreditHeader(imi,createdby,nextServiceDate)
values(theimi,theUser,theNextServiceDate);

select @@identity;

END

在我的ASP.NET网络应用程序中,我有以下内容 SqlDataSource的。我在最后使用输出类型 参数。

<asp:SqlDataSource ID="sqldsHeader" runat="server"
ConnectionString="<%$ ConnectionStrings:MSPortal %>"
ProviderName="<%$
ConnectionStrings:MSPortal.ProviderName %>"
InsertCommand="Call
Portal_InsertHeader(?,?,?)"
InsertCommandType="StoredProcedure">
<InsertParameters>
<asp:Parameter Name="IMI" Type="Int32" />
<asp:Parameter Name="USER" Type="String" />
<asp:Parameter Name="NextServiceDate"
Type="DateTime" />
<asp:Parameter direction="Output"
name="HeaderID" type="Int32" />
</InsertParameters>
<SelectParameters>
<asp:Parameter Name="ID" Type="Int32"
DefaultValue="0" />
</SelectParameters>
</asp:SqlDataSource>

当我调用.Insert方法时,行插入正常,但是 当我尝试检查“插入”中的输出参数时 方法我得到一个空值。

那么我需要更改什么才能访问输出 ASP.NET代码中的变量?

2 个答案:

答案 0 :(得分:0)

您刚才引用了错误的名称吗?

<SelectParameters>
    <asp:Parameter Name="HeaderID" Type="Int32" DefaultValue="0" />
</SelectParameters>

答案 1 :(得分:0)

解决方案是使用input关键字在存储过程中使用parrot。使用“out”似乎并没有这样做但是当我将其更改为“inout”时,所有工作都按预期进行了