1. 程式人生 > >C#: 過程或函式""需要""引數,但未提供該引數

C#: 過程或函式""需要""引數,但未提供該引數

在平時的C#專案開發中,當呼叫某個儲存過程或函式的時候,我們可能經常會遇到這樣的問題,

“過程或函式XXX需要XXX引數,但未提供該引數”,  這到底是怎麼回事呢?是什麼問題引起的?

出現這個錯誤一般會由以下幾種情況引起:

1.  程式中傳入引數與已定義的儲存過程或函式的引數個數或名稱不符;

2.  沒有對傳入的資料作空值的處理,如下,我們需要對可以為空的值作這樣的處理,一旦其為空,就設定為DBNull.value.

foreach(SqlParameter p in parms)
{
  if(p.value == null)
  {
  p.value=DBNull.value;
  }
}

3. 傳入了引數,卻沒有真正通過sqlCommand去操作。

所以當遇到這樣的問題,首先需要做的就是檢查一下寫的程式碼是否屬於這幾種情況,如果是就做相應處理,或者考慮定義的變數是否被初始化。 

相關推薦

C#: 過程函式""需要""引數,提供引數

在平時的C#專案開發中,當呼叫某個儲存過程或函式的時候,我們可能經常會遇到這樣的問題, “過程或函式XXX需要XXX引數,但未提供該引數”,  這到底是怎麼回事呢?是什麼問題引起的? 出現這個錯誤一般會由以下幾種情況引起: 1.  程式中傳入引數與已定義的儲存過程或

Text資料型別,引數化查詢提供引數(將null插入資料庫)

當你是使用引數化查詢時為引數賦時,比如command.Parameters.Add(@a,SqlDbType.Text,30).Value=a;當a=null是將報錯: 錯引數化查詢 '(@a varchar(100)....' 需要引數 '@a',但未提供該引數 只是因為你給a的為null,

過程函式“某一欄位”需要引數,單位提供

錯誤型別 導致錯誤的程式碼如下: 出錯原因: 因為在編寫三層中的DAL中,新增時沒有加上賦值的過程: arr[0].Value = model.LoginName; arr[1].Value = mod

oracle如何檢視已經完成的過程函式的原始碼

比如你的過程名為pro1 方法一:在pl/sql developer的話,輸入--pro1,在過程名上右鍵,選view 方法二:select text from user_source where name='PRO1' SQL> desc user_sou

儲存過程函式中輸出Long value值

很多時候我們在除錯函式或儲存過程的時候,經常會遇到想看變數的值,但是卻顯示Long value,讓人很頭疼,特此在這裡寫了一個過程,可用來在DBMS Output 視窗輸出變數的值,可支援長達4GB的

Oracle 中重新編譯無效的儲存過程, 函式、觸發器等物件

Oracle 中的儲存過程在有些情況下會變成失效狀態,在 PL/SQL Developer 中該儲存過程的圖示左上角顯示一把小紅叉叉。比如儲過程所引用的物件失效,dblink 出問題啦都可能引起用到它的儲存過程失效。再就我的儲存過程經常會變成無效,至今原因都未查明。查詢 db

使用ctypes呼叫系統C API函式需要注意的問題,函式引數中有指標結構體的情況下最好不要修改argtypes

有人向我反應,在程式碼裡同時用我的python模組uiautomation和其它另一個模組後,指令碼執行時會報錯,但單獨使用任意一個模組時都是正常的,沒有錯誤。 我用一個例子來演示下這個問題是如何出現的。 假設我需要寫一個module,這個module需要提供獲取當前滑鼠游標下視窗控制代碼的功能,這需要呼

linux下利用CC++ 語言調用需要root權限的函數

編譯程序 註意 步驟 oot 登錄 調用 get bsp 屬於 1、setuid法(1)登錄root用戶,將程序設置成root:root所有者(等價於:登錄root用戶編譯程序)。也可直接將普通用戶加入root組中,那麽編譯程序不用來回切換用戶。(2)登錄root用戶設置程

Matlab高階教程_第二篇:關於MATLAB轉C#過程中遇到輸出兩組引數的問題

1. 在matlab的m函式很可能遇到原函式[a,b] = func(a); 這樣的兩個輸出引數。 2. 在觀察C#生成後定義中我們發現: public MWArray HP(); public MWArray HP(MWArray Y); public MWArray HP(MWArray Y, M

vector c++元素做函式引數怎麼弄

最近碰到vector有點懵,猛地想不出怎麼只傳一個元素……聯想到結構體陣列結果更亂了……   下面對比一下: 陣列元素,定義函式引數是int 容器類,定義函式引數就是包含的結構體student 對於int型陣列的元素作函式引數: #include <io

[Visual Studio C++] [MFC 除錯錯誤]:str.Format()不存在與引數列表匹配的過載函式

1.編譯問題描述: str.Format(“%d”,m_number)不存在與引數列表匹配的過載函式,紅色波浪線出現在“ . ”下方 2.錯誤程式碼:                    

C#系列 ---5 函式引數 optional , ref, out, params 和 引數值傳遞和引用傳遞問題

variables and parameters variable 代表的是一個記憶體地址,該地址包含一個可變的值。可以是local variable, parameter (value, ref, or out), field (instance or static), or arra

Linux C中main函式中的引數argc和argv

                                          &

C語言:函式引數的傳值與傳地址

任務程式碼: #include <stdio.h> void swap(int *a ,int *b)//按之前對指標認識,*a代表指標變數a,a儲存的是地址,*a是地址的值。 { //但是可以看到下面傳輸過程中swap(

深入理解C語言的函式呼叫過程

    本文主要從程序棧空間的層面複習一下C語言中函式呼叫的具體過程,以加深對一些基礎知識的理解。     先看一個最簡單的程式:   點選(此處)摺疊或開啟  /*test.c*/ #include <stdio.h> int foo1(

C++之main函式引數

前言:我們一般使用的main函式不加引數,當加了引數會怎樣呢? int main(int argc,char**argv) { .... return 0; } 引數解析: int argc: 英文名為arguments count(引數計數) char**

C語言彙編-函式呼叫堆疊的過程

本篇來分析函式呼叫的過程:通過下面一個簡單的例子來進入話題:#include<stdio.h>int sum(int a,int b){ int tmp=0; tmp=a+b; return tmp;}int main(){ int a=10; int b=20;

C語言中函式引數傳遞的兩種方式

問題及程式碼: /* *完成日期:2018.10.2 * *問題描述:c語言函式引數傳遞的兩種方式 * */ #include <stdio.h> void swap1(int x, int y); //對交換函式myswap1的提前宣告 (傳值

c# dllimport 呼叫函式引數亂碼

[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool WritePrivatePro

[C]C語言中函式實現返回引數二進位制中 1 的個數

通過C語言程式將十進位制數轉化成二進位制數,然後求出二進位制數中1的個數。 下面用三種方法來實現。來 方法一: 除2取餘法。對一十進位制數,用2輾轉相除至結果為1,將餘數和最後的1從下向上倒序寫就是對應的二進位制。 例如:十進位制數302轉化成二進位制。 302