【发布时间】:2015-08-18 21:31:39
【问题描述】:
在ShippedContainerSettlement 程序中,我试图将参数添加到我在远程服务器(plex)上创建的存储过程的SQL 语句中。
public void checkGradedSerials()
{
localTable = "Graded_Serials";
List<string> gradedHides = new List<string>();
string queryString = "call sproc164407_2053096_650214('@startDate', '" + endDate + "');";
OdbcDataAdapter adapter = new OdbcDataAdapter();
OdbcCommand command = new OdbcCommand(queryString, connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@startDate", startDate);
adapter.SelectCommand = command;
connection.Open();
while (rowsCollected == false)
{
if (retries <= 5)
{
try
{
DataTable table = new DataTable();
adapter.Fill(table);
当我使用参数@startDate 并给它一个值时会引发错误。但是,当我运行程序并添加我对 endDate 所做的参数时,它运行正常吗?
我得到的错误是:
任何想法我做错了什么。
编辑: 我已经合并了下面提到的一些更改。这是我使用的代码。
public void checkGradedSerials()
{
localTable = "Graded_Serials";
List<string> gradedHides = new List<string>();
OdbcCommand command = new OdbcCommand("sproc164407_2053096_650214", odbcConnection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@startDate", startDate);
command.Parameters.AddWithValue("@endDate", endDate);
OdbcDataAdapter adapter = new OdbcDataAdapter();
adapter.SelectCommand = command;
odbcConnection.Open();
while (rowsCollected == false)
{
if (retries <= 5)
{
try
{
DataTable table = new DataTable();
adapter.Fill(table);
但它似乎没有接收到我发送的参数,因为我收到了这个错误。
这是我正在使用的存储过程。这可能看起来很奇怪,但请记住,当我简单地将字符串传递给选择命令时,这是有效的(参见上面第一个代码示例中的 endDate)。
SELECT DISTINCT(Serial_No)
FROM Part_v_Container_Change2 AS CC
WHERE CC.Change_Date > @Change_Start_Date AND
CC.Change_Date <= @Change_End_Date AND
CC.Location = 'H Grading';
并在此处添加参数:
【问题讨论】:
-
@Change_Start_Date 来自哪里?你能告诉我们存储过程吗?另外,如果这是您标记的 sql server,为什么要使用 ODBC 而不是本机 sql server 提供程序?
-
我需要 odbc 连接来连接它。这是这样做的唯一方法。 Change_Start_Date 是我使用 startDate 从中选择值的列的名称。
-
我很困惑,如果你的存储过程中的参数是
@Change_Start_Date和@Change_End_Date,你为什么要设置@startDate和@endDate?你能显示整个 sproc (CREATE PROCEDURE ...) 而不仅仅是 select 语句吗? -
这就是你添加它的方式。这就是为什么我说它可能看起来很奇怪。这只是他们使用的系统。如果我将参数更改为 @change_Start_Date 它没有区别。
-
很抱歉,如果没有更多信息,我无法帮助您。
标签: c# sql-server stored-procedures parameters