插入存储过程后返回,如果成功则返回1,否则返回0

时间:2015-10-14 07:55:00

标签: sql sql-server

我有一个存储过程。插入后,它应返回一个值:如果插入成功,则返回1,否则返回0.

例如:

Linq-to-Json

感谢您的帮助!

2 个答案:

答案 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;值。