过程或函数xyz期望参数abc即使我不想输入任何东西 [英] Procedure or function xyz expects parameter abc even if i dont want to enter anythin

查看:124
本文介绍了过程或函数xyz期望参数abc即使我不想输入任何东西的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





仅仅需要帮助,我正在创建一个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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆