我有一个存储过程。插入后,它应返回一个值:如果插入成功,则返回1,否则返回0.
例如:
Linq-to-Json
感谢您的帮助!
答案 0 :(得分:2)
有两种可能的解决方案:第一种是基于输出参数,当您运行它时,参数将按期望值进行估值。 正如您所问,其他解决方案只会返回所需的结果。 他们都检查@@ ERROR以了解最后一次操作是否成功。
解决方案A:
ALTER PROCEDURE [dbo].[sp_save_transaction]
-- Parameter
@SourceCode nvarchar(255),
@DepositorName nvarchar(255),`enter code here`
@TransactionDate date,
@result int output
AS
SET XACT_ABORT ON
--BEGIN TRAN
DECLARE @PaymentDate date
DECLARE @PaymentDepositorName nvarchar(255)
DECLARE @PaymentNationId int
SET @PaymentDate = @TransactionDate
SET @PaymentDepositorName = @DepositorName
SET @PaymentNationId = (SELECT [NAT_SYS_ID] FROM [MB_TB_NATION] WHERE [NAT_CODE] = @DepositorCountry)
INSERT INTO [dbo].[MB_TB_TRANSACTION]
([TRA_PAYMENT_DATE]
,[TRA_PAYMENT_DEPOSITOR_NAME]
,[TRA_PAYMENT_NATION_ID]
)
VALUES
(
@PaymentDate,
@PaymentDepositorName,
@PaymentNationId,
)
IF @@ERROR = 0
SET @result = 1
ELSE SET @result = 0
解决方案B:
ALTER PROCEDURE [dbo].[sp_save_transaction]
-- Parameter
@SourceCode nvarchar(255),
@DepositorName nvarchar(255),`enter code here`
@TransactionDate date
AS
SET XACT_ABORT ON
--BEGIN TRAN
DECLARE @result int
DECLARE @PaymentDate date
DECLARE @PaymentDepositorName nvarchar(255)
DECLARE @PaymentNationId int
SET @PaymentDate = @TransactionDate
SET @PaymentDepositorName = @DepositorName
SET @PaymentNationId = (SELECT [NAT_SYS_ID] FROM [MB_TB_NATION] WHERE [NAT_CODE] = @DepositorCountry)
INSERT INTO [dbo].[MB_TB_TRANSACTION]
([TRA_PAYMENT_DATE]
,[TRA_PAYMENT_DEPOSITOR_NAME]
,[TRA_PAYMENT_NATION_ID]
)
VALUES
(
@PaymentDate,
@PaymentDepositorName,
@PaymentNationId,
)
IF @@ERROR = 0
SET @result = 1
ELSE SET @result = 0
RETURN @result
答案 1 :(得分:1)
你可以通过检查" @@ ERROR"来实现这一点。属性。
https://msdn.microsoft.com/en-us/library/ms188790.aspx
有些事情:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget32"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/searchText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/searchBtn"
android:layout_centerVertical="true"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_marginBottom="20dp"
android:hint="@string/search_hint"
android:inputType="number"
android:maxLength="10" />
<Button
android:id="@+id/searchBtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:background="#339933"
android:padding="20dp"
android:text="@string/search_button_text"
android:textColor="#FFFFFF"
android:textSize="20sp"
android:textStyle="bold" />
</RelativeLayout>
</ScrollView>
</RelativeLayout>
但是我考虑使用&#34; 0&#34;作为您的成功价值,以及其他任何错误。然后,您可以使用不同的值来表示不同的错误状态。除非您直接将结果映射到布尔值&#34;成功&#34;值。