[英]Return value to textbox from stored procedure
在返回值ID值時遇到麻煩,我需要將輸出返回到表單中的文本框。 Webforms和ADO.net
我嘗試將參數標識添加為int和OUT子句,同時設置identity = scope_identity並返回值,然后使用我的團隊當前用於ExecuteNonQuery
的模式,並使用傳入參數的匿名參數類,並嘗試將@identity值傳遞給文本框.text作為ID。
DataManager.Db.ExecuteNonQuery("DefaultConnection", "usp_CreateNewSalesTerritory",
new SqlParameter("@orgId", orgId),
new SqlParameter("@identity", salesTerritoryIdTextBox.Text),
new SqlParameter("@salesTerritoryName", salesTerritories.Name),
new SqlParameter("@createdBy", salesTerritories.CreatedBy),
new SqlParameter("@createdDate", salesTerritories.CreatedDate),
new SqlParameter("@updatedBy", salesTerritories.UpdatedBy),
new SqlParameter("@updatedDate", salesTerritories.UpdatedDate),
new SqlParameter("@isActive", salesTerritories.IsActive));
CREATE PROCEDURE dbo.usp_CreateNewSalesTerritory
@orgId VARCHAR(255),
@salesTerritoryName VARCHAR(255),
@createdBy VARCHAR(255),
@createdDate DATETIME,
@updatedBy VARCHAR(255),
@updatedDate DATETIME,
@isActive BIT,
@identity INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO SalesTerritory (OrganizationId, Name, IsActive,
CreatedBy, CreatedDate, UpdatedBy, UpdatedDate)
VALUES (@orgId, @salesTerritoryName, @isActive,
@createdBy, @createdDate, @updatedBy, @updatedDate);
--SELECT SCOPE_IDENTITY();
--RETURN SCOPE_IDENTITY();
--SELECT @@IDENTITY;
SET @identity = SCOPE_IDENTITY()
END;
RETURN @identity
我希望獲得該記錄的新插入的ID值,而是在屏幕上獲得默認值0
通常,您將使用SqlCommand
對象上的.ExecuteNonQuery()
方法在“純” ADO.NET中調用這種存儲過程-因為它是INSERT
語句。
但是現在,您的存儲過程實際上正在返回一些數據-因此,您確實需要像對待“正常” SELECT
存儲過程那樣對待它。
假設您總是只返回SCOPE_IDENTITY()
值-最好像這樣:
SELECT SCOPE_IDENTITY();
這只是一個單一值-您可以在SqlCommand
對象上使用.ExecuteScalar()
方法-如下所示:
object returned = sqlCmd.ExecuteScalar();
if (returned != null)
{
int newIdValue = Convert.ToInt32(returned);
}
// else -> nothing was returned, so most likely no row has been inserted -> handle it appropriately
因此,也許您已經在DataManager.Db
對象上為.ExecuteScalar()
使用了“包裝”方法-也許您需要添加它。 試試看-我很確定這可以解決問題。
我會避免使用RETURN ...
語句-默認情況下,SQL Server存儲過程將始終返回受存儲過程影響的行數-如果可以,請不要更改該“標准”行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.