过程或函数xyz期望参数abc即使我不想输入任何东西 [英] Procedure or function xyz expects parameter abc even if i dont want to enter anythin
问题描述
仅仅需要帮助,我正在创建一个mvc应用程序,其中我接受用户输入说CustId CustName和CustPhone.I已经为它编写了一个程序当我输入所有3个值作为输入时工作正常。
现在,有时需要,我可能不输入CustName或CustPhone id。
如果我这样做我会收到错误
程序或功能' 'NewCustomer''需要参数''@ ipv_CustomerName'',这是没有提供的。
我怎样才能实现这个目标?
请帮助。
提前致谢。
这是我的实体类:
Hi,
A mere help needed, I am creating an mvc app wherein i take user input say CustId CustName and CustPhone.I have written a procedure for it which works fine when i enter all 3 values as input.
Now, sometimes need be,i may not enter CustName or CustPhone for an id.
if i do so i get an error "
Procedure or function ''NewCustomer'' expects parameter ''@ipv_CustomerName'', which was not supplied.
how can i achieve this??
Please Help.
Thanks in advance.
This is my Entity class:
public class CustomerDetails
{
public int CustomerId { get; set; }
public string CustomerName { get; set; }
public string CustomerPhone { get; set; }
public CustomerDetails()
{
CustomerId = 123;
CustomerName = "Customer";
CustomerPhone = "9876543210";
}
}
------------- ---------------------------
数据访问层中的代码:
----------------------------------------
Code in the data access layer:
//Create parameters
SqlParameter ipv_CustomerId = cmd.CreateParameter();
SqlParameter ipv_CustomerName = cmd.CreateParameter();
SqlParameter ipv_CustomerPhone = cmd.CreateParameter();
//assign names
ipv_CustomerId.ParameterName = "@ipv_CustomerId";
ipv_CustomerName.ParameterName = "@ipv_CustomerName";
ipv_CustomerPhone.ParameterName = "@ipv_CustomerPhone";
//define type
ipv_CustomerId.SqlDbType = SqlDbType.Int;
ipv_CustomerName.SqlDbType = SqlDbType.VarChar;
ipv_CustomerPhone.SqlDbType = SqlDbType.VarChar;
//provide values (input variable is user input to the function)
ipv_CustomerId.Value = input.CustomerId;
ipv_CustomerName.Value = input.CustomerName;
ipv_CustomerPhone.Value = input.CustomerPhone;
//add parameters
cmd.Parameters.Add(ipv_CustomerId);
cmd.Parameters.Add(ipv_CustomerName);
cmd.Parameters.Add(ipv_CustomerPhone);
rowsAffected = cmd.ExecuteNonQuery();
if (rowsAffected < 1)
{
added = false;
}
else
{
added = true;
}
------------------------------ ----------------
程序:
----------------------------------------------
The Procedure:
Create PROCEDURE NewCustomer
(@ipv_CustomerId int,
@ipv_CustomerName varchar(20),
@ipv_CustomerPhone varchar(20))
AS
Insert into Customer_Table values(@ipv_CustomerId,
@ipv_CustomerName,
@ipv_CustomerPhone)
------------- ---------------------------
我希望能够将空值传递给CustomerName和的过程CustomerPhone。
[/ EDIT]
----------------------------------------
I want to be able to pass null values to the procedure for CustomerName and CustomerPhone.
[/EDIT]
推荐答案
你可以使用SQL中的可选参数。只需给它一个默认值。例如:
You can use optional parameters in SQL. Just give it a default value. For example:
ALTER PROCEDURE [dbo].[TESTSP]
(
@param1 NVARCHAR (50),
@param2 NVARCHAR (50) = NULL
)
AS
BEGIN
在这种情况下,如果我没有传入@param2,那么将使用null。
In this case, if I don''t pass in @param2 then a null will be used.
这篇关于过程或函数xyz期望参数abc即使我不想输入任何东西的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!