none
Название схемы, начинающееся на знак @ RRS feed

  • Вопрос

  • Люди добрые, спасите помогите, проект послезавтра сдавать, а тут такая засада!

    В общем в одной далёкой базе данных, к администрированию которой я не имею ни какого отношения, создали схему @LNSI01

    Мне нужно вызвать хранимую процедуру @LNSI01.GETNSI

    Засада в том, что ADO считает название схемы переменной, и говорит, что она не определена в списке параметров.

    Подскажите кто-нибудь, чем заменить знак @, что-бы в результирующем запросе он фигурировал?

    (Отвечу сразу на вопрос "А куда ты раньше смотрел?". У меня был доступ к их отладочной БД и на ней я писал программу. Там схема называется LNSI01, а доступ к промышленной мне дали только вчера, перед самой сдачей проекта. У этих вредителей правила видите ли такие, что названия схем на отладочном и промышленном полигонах отличаются знаком @ в начале)

    8 декабря 2012 г. 6:24

Ответы

  • Нашёл )))

    Оказывается нужно в двойные кавычки заключить название схемы и название процедуры:

    com.CommandType = System.Data.CommandType.StoredProcedure;

    com.CommandText = string.Format("\"{0}.GETNSI\"", prop.DB2Sxema);

    com.Parameters.Add("@TABNAME", DB2Type.VarChar, 100);

    com.Parameters["@TABNAME"].Value = "IC00." + TypeOfTable.ToUpper();

    com.Parameters.Add("@CORTIME_BEG", DB2Type.Timestamp, 10);

    com.Parameters["@CORTIME_BEG"].Value = From.HasValue ? From.Value : new DateTime(1970, 1, 1);

    com.Parameters.Add("@CORTIME_END", DB2Type.Timestamp, 10);

    com.Parameters["@CORTIME_END"].Value = To.HasValue ? To.Value : new DateTime(1970, 1, 1);

    com.Parameters.Add("@RETCODE", DB2Type.SmallInt);

    com.Parameters["@RETCODE"].Direction = ParameterDirection.Output;

    Но спасибо за наводку с квадратными скобками =)
    • Предложено в качестве ответа YatajgaModerator 9 декабря 2012 г. 8:47
    • Помечено в качестве ответа elGuajiro 9 декабря 2012 г. 12:32
    9 декабря 2012 г. 8:31

Все ответы

  • В квадратные скобки брать пробовали уже?
    • Предложено в качестве ответа Naomi N 9 декабря 2012 г. 19:23
    8 декабря 2012 г. 17:31
  • ...и в кавычки, и два @@ и в фигурные - не помогает =(

    В квадратные так - [@LNSI01].GETNSI или так [@]LNSI01.GETNSI ?

    Вот я первый вариант не попробовал - сейчас до работы дойду....

    9 декабря 2012 г. 5:50
  • Нашёл )))

    Оказывается нужно в двойные кавычки заключить название схемы и название процедуры:

    com.CommandType = System.Data.CommandType.StoredProcedure;

    com.CommandText = string.Format("\"{0}.GETNSI\"", prop.DB2Sxema);

    com.Parameters.Add("@TABNAME", DB2Type.VarChar, 100);

    com.Parameters["@TABNAME"].Value = "IC00." + TypeOfTable.ToUpper();

    com.Parameters.Add("@CORTIME_BEG", DB2Type.Timestamp, 10);

    com.Parameters["@CORTIME_BEG"].Value = From.HasValue ? From.Value : new DateTime(1970, 1, 1);

    com.Parameters.Add("@CORTIME_END", DB2Type.Timestamp, 10);

    com.Parameters["@CORTIME_END"].Value = To.HasValue ? To.Value : new DateTime(1970, 1, 1);

    com.Parameters.Add("@RETCODE", DB2Type.SmallInt);

    com.Parameters["@RETCODE"].Direction = ParameterDirection.Output;

    Но спасибо за наводку с квадратными скобками =)
    • Предложено в качестве ответа YatajgaModerator 9 декабря 2012 г. 8:47
    • Помечено в качестве ответа elGuajiro 9 декабря 2012 г. 12:32
    9 декабря 2012 г. 8:31