發現我寫了下面如何調用程序aspx.cs文件retrun真或假時記錄在數據庫
CREATE PROCEDURE [dbo].[CheckPI]
@PI Varchar(50)
AS BEGIN
SET NOCOUNT ON;
DECLARE @Exists INT
IF EXISTS(SELECT * FROM Tbl_ILSM_Quotation WHERE QuotationNo = @PI)
BEGIN
SET @Exists = 1
END
ELSE
BEGIN
SET @Exists = 0
END
RETURN @Exists
// when i execute this code in sql then it gives right ans
DECLARE @ReturnValue INT
EXEC @ReturnValue = @ReturnValue
SELECT @ReturnValue
END
給出aspx.cs文件
protected string GetPI()
{
int customerId = GetCustomerID(); // customer id - 123
int year = Convert.ToInt32(ddlIdYear.SelectedValue);
string PI = "PI/" + year + "/" + customerId; // PI - PI/2017/123
//SqlDataReader myReader = null;
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["JSSConnection"].ToString());
con.Open();
SqlCommand cmd = new SqlCommand("CheckPI", con);
cmd.Parameters.AddWithValue("@PI", PI);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter sqlParam = new SqlParameter("@ReturnValue", DbType.Boolean);
sqlParam.Direction = ParameterDirection.Output;
cmd.Parameters.Add(sqlParam);
cmd.ExecuteNonQuery();
//int retrnval = Convert.ToInt32(cmd.ExecuteScalar());
con.Close();
//Response.Write(cmd.Parameters["@ReturnValue"].Value);
return PI;
}
其返回1和0的程序
我做了程序來檢查pi數據庫是否可用,如果可用,則返回1,否則返回1 0 然後我在aspx.cs文件中調用該SP,但我無法檢查它在執行1或0後返回的內容
1)['RETURN'](https://docs.microsoft.com/en- us/sql/t-sql/language-elements/return-transact-sql)立即退出存儲過程,之後的任何命令都將被忽略。 2)還有一個['ParameterDirection.ReturnValue'](https://msdn.microsoft.com/en-us/library/system.data.parameterdirection.aspx)。 3)'ExecuteNonQuery'就足夠了,不需要再執行'ExecuteScalar'。 4)你忽略'retrnval' –
參數方向不輸出它是'ReturnValue'。但是你應該使用'Output',因爲按照慣例,返回值是成功或失敗的報告,而不是實際的數據結果。 – Crowcoder
Dp你真的需要一個存儲過程來完成這個簡單的任務嗎? – Steve