Что является эквивалентом “Выставочных Таблиц” в SQSH

Мы не знаем, какой класс newrow. Для этого я буду использовать идентификатор RowClass.

(например, RowClass = newrow.__class__)

Идея состоит в том, чтобы создать словарь с целыми числами в качестве ключей и функциями для вызова в качестве значений и найти функцию со значением по умолчанию setDouble

[ 1111] Создайте его один раз при запуске (иначе, это менее интересно с точки зрения производительности), что объясняет, что я не использую newrow и объектную нотацию, что потребует перестройки словаря при каждом новом значении newrow.

calldict = {
  15 : RowClass.setCharString,
  7  : RowClass.setInteger,
  11 : RowClass.setBoolean,
  12 : lambda self,i,r : RowClass(self,i,r.year,r.month,r.day)  # special case to match 2 arguments
  # same principle for others, of course
}

ваш цикл с добавлением, сначала поиск функции, затем вызов функции:

while row is not None:
    for i in range(0,colCount):
        if row[i] is not None:

            # look up the function

            function_to_call = calldict.get(i,RowClass.setDouble)

            # call the function, passing the object as first argument:

            function_to_call(newrow,i,row[i])
14
задан rampion 1 May 2009 в 14:34
поделиться

3 ответа

After some help from this site and some trial and error:

 select table_name from systable
 go

Painfully enough, sp_help doesn't exist in my version.

6
ответ дан 1 December 2019 в 12:53
поделиться

Я не знаком с systables. Какой вид Sybase вы используете? Возможно, ASA?

Пожалуйста, найдите добавленную функцию sqsh (которую вы можете поместить в свой .sqshrc), которая демонстрирует некоторые запросы к таблицам каталога ASE (Adaptive Server Enterprise) и использование библиотеки хранимых процедур системы Эда Барлоу http://www.edbarlow.com/gem/procs_only/index.htm, чтобы выяснить, какие объекты находятся в базе данных.

# Shorthand for sp__helptext or sp__revtable
\func -x ?
  IF EXISTS (SELECT * FROM sysobjects WHERE name = \\'${1}\\')
       BEGIN
       DECLARE @type VARCHAR(3)
       SELECT @type = type FROM sysobjects WHERE name = \\'${1}\\'
       IF @type IN (\\'U\\')
          exec sp__revtable ${1}
       ELSE
          exec sp__helptext ${1}
        END
   ELSE
       -- default to sp__ls (which can list partial matches) if an exact match wasn't found in sysobjects
       exec sp__ls ${1}
   go
\done

2
ответ дан 1 December 2019 в 12:53
поделиться

У вас работает sp_tables ? Вы пытаетесь завершить табуляцию при создании запроса?

8
ответ дан 1 December 2019 в 12:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: