【发布时间】: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