存储过程不接受整数参数

时间:2018-08-03 18:42:14

标签: c# sql asp.net stored-procedures

我一直在使用由数据库管理员创建的存储过程,该数据库管理员恰好在下周出门在外。 SP曾经可以工作,但是在他离开之前,数据库专家编辑了SP,导致我的代码抛出服务器错误:“列名或提供的值数与表定义不匹配”。他声称在离开SP之前主要应该是相同的,所以我对它不再匹配的原因感到困惑。

这是c#代码:

{
  "name": "tsl-frontend",
  "version": "0.1.0",
  "scripts": {
    "test": "karma start",
    "build-localhost": "webpack --mode development --progress --colors --env.env localhost",
    "build-development": "webpack --mode development --progress --colors --env.env development",
    "build-staging": "webpack --mode production --progress --colors --env.env staging",
    "build-production": "webpack --mode production -p --progress --colors --env.env production",
    "build-maintenance": "webpack --mode production -p --progress --colors --env.env maintenance",
    "serve": "webpack-dev-server --mode development --inline --progress --colors --env.env development",
    "serve-production": "webpack-dev-server --mode production --inline --progress --colors --env.env development",
    "serve-localhost": "webpack-dev-server --mode development --inline --progress --colors --env.env localhost",
    "serve-host": "webpack-dev-server --host 0.0.0.0 --port 80 --disable-host-check --mode development --inline --progress --colors --env.env localhost",
    "serve-maintenance": "webpack-dev-server --mode development --inline --progress --colors --env.env maintenance"
  },
  "dependencies": {
    "@angular/animations": "^5.2.11",
    "@angular/cdk": "^2.0.0-beta.12",
    "@angular/common": "^5.2.11",
    "@angular/compiler": "^5.2.11",
    "@angular/compiler-cli": "^5.2.11",
    "@angular/core": "^5.2.11",
    "@angular/forms": "^5.2.11",
    "@angular/http": "^5.2.11",
    "@angular/material": "^2.0.0-beta.12",
    "@angular/platform-browser": "^5.2.11",
    "@angular/platform-browser-dynamic": "^5.2.11",
    "@angular/platform-server": "^5.2.11",
    "@angular/router": "^5.2.11",
    "@ng-bootstrap/ng-bootstrap": "^1.1.2",
    "@types/file-saver": "^1.3.0",
    "angular2-jwt": "^0.2.3",
    "angular2-text-mask": "^8.0.5",
    "bootstrap": "^4.1.2",
    "chart.js": "^2.7.2",
    "devextreme": "^18.1.4",
    "devextreme-angular": "^18.1.4",
    "file-saver": "^1.3.8",
    "font-awesome": "^4.7.0",
    "moment": "2.18.1",
    "moment-timezone": "0.5.13",
    "ng2-bootstrap-modal": "1.0.1",
    "ng2-charts": "^1.6.0",
    "ng2-drag-drop": "^2.9.2",
    "ng2-page-scroll": "^4.0.0-beta.12",
    "ng2-toastr": "^4.1.2",
    "popper.js": "^1.14.3",
    "reflect-metadata": "0.1.8",
    "rxjs": "5.5.5",
    "systemjs": "0.19.40",
    "typescript": "^2.9.2",
    "xlsx": "^0.11.19",
    "zone.js": "^0.8.26"
  },
  "devDependencies": {
    "@ngtools/webpack": "^6.0.8",
    "@servicestack/client": "^1.0.14",
    "@types/file-saver": "^1.3.0",
    "@types/jasmine": "^2.8.8",
    "@types/node": "7.0.7",
    "angular-router-loader": "^0.6.0",
    "angular2-router-loader": "^0.3.5",
    "angular2-template-loader": "^0.6.2",
    "babel-polyfill": "^6.26.0",
    "css-loader": "^0.28.11",
    "extended-define-webpack-plugin": "^0.1.3",
    "extract-text-webpack-plugin": "^3.0.2",
    "file-loader": "^1.1.11",
    "file-saver": "^1.3.8",
    "html-webpack-plugin": "^4.0.0-alpha",
    "jasmine": "^2.99.0",
    "karma": "^1.7.0",
    "karma-sourcemap-loader": "^0.3.7",
    "karma-webpack": "^2.0.13",
    "ng-intercom": "^1.0.0-beta.5-2",
    "ng2-tree": "^2.0.0-rc.11",
    "node-sass": "^4.9.2",
    "open-browser-webpack-plugin": "0.0.5",
    "path": "^0.12.7",
    "raw-loader": "^0.5.1",
    "sass-loader": "^6.0.7",
    "style-loader": "^0.13.2",
    "text-mask-addons": "^3.7.2",
    "toposort": "^1.0.7",
    "ts-loader": "^4.4.2",
    "webpack": "^4.16.1",
    "webpack-cli": "^2.1.5",
    "webpack-del-plugin": "0.0.1",
    "webpack-dev-server": "^3.1.4",
    "webpack-merge": "^4.1.3",
    "webpack-rev-replace-plugin": "^0.1.1"
  }
}

这是SP的声明:

    System.Data.SqlClient.SqlCommand objCmd = new 
    System.Data.SqlClient.SqlCommand("dci.webDonorStatistics", objConn);
    objCmd.CommandTimeout = 950;
    objCmd.CommandType = System.Data.CommandType.StoredProcedure;
    objCmd.Parameters.Add(new 
    System.Data.SqlClient.SqlParameter("@FiscalYear", 2018));
    GridView1.DataSource = objCmd.ExecuteReader();
    GridView1.DataBind();

任何帮助将不胜感激。预先感谢。

2 个答案:

答案 0 :(得分:3)

第一步是找出您的错误。您的错误是从应用程序代码还是数据库代码引发的? 如果您遵循3Dave's的建议,您会得到什么?假设您被指向正确的数据库服务器。尝试运行:

EXEC [dci].[webDonorStatistics] 2018

如果上述调用未返回任何错误,我将检查应用程序代码。

答案 1 :(得分:0)

您的错误表明您要插入表中的数据无效,您必须右键单击存储过程,然后单击执行存储过程,在其中您可以插入会计年度的参数,执行应该失败。然后使用不同的名称创建相同存储过程的副本,并更改​​会计年度的数据类型,并查看是否可以解决问题并在执行存储过程时为您提供结果。另外,在存储的Proc上,如果有尝试检查要插入的数据类型和表模式中存在的数据类型(如果不匹配)的尝试,我将看不到任何插入命令。您可以进行相应的更改。