【问题标题】:SQL Anywhere/ASP.NET - using SQLDataSource with output parameterSQL Anywhere/ASP.NET - 使用带有输出参数的 SQLDataSource
【发布时间】:2012-03-28 15:14:55
【问题描述】:

我使用的数据库是 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 Web 应用程序中,我在 SQL 数据源。我在最后使用输出类型 参数。

<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 代码中的变量?

【问题讨论】:

  • 执行此操作时出现错误“从类型 'DBNull' 转换为类型 'String' 无效。” Protected Sub sqldsHeader_Inserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) 处理 sqldsHeader.Inserted If (e.Exception Is Nothing) Then Me.hfHeaderNum.Value = e.Command.Parameters("HeaderID" ).Value End If

标签: asp.net sql


【解决方案1】:

你是不是把名字引用错了?

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

【讨论】:

  • 没有。在 Inserted 事件中,我引用了正确的变量,但它包含 DBNUll。
  • 好的。我还会仔细检查以确保事物的 DB 端实际上正确地返回了 @@identity。我会使用假插入运行查询并打印身份以查看它是否真的在保存它。
【解决方案2】:

解决方案是在存储过程中使用带有 inout 关键字的 parroter。仅使用“out”似乎并没有这样做,但是当我将其更改为“inout”时,一切都按预期工作

【讨论】:

    猜你喜欢
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多