Пройдите имя таблицы, чтобы выбрать оператор из курсора -- mysql поле с участием stored-procedures пол Связанный проблема

Pass table name to select statement from cursor


0
vote

проблема

русский

Как я могу использовать значения, возвращаемые из курсора в качестве названий таблиц в MySQL-процедурах?

 <код> DECLARE cur CURSOR FOR select table_name, column_name     from information_schema.columns     where table_schema = 'foo' and table_name like 'bar%'; OPEN cur;  loop1: LOOP  FETCH cur INTO table_val, column_val;  IF no_more_rows THEN   CLOSE cur;   LEAVE loop1; END IF; update table_val SET column_val ...   

Это броски ошибки, что <код> foo.table_val doesnt exist . Как я могу получить фактическое имя таблицы, которое будет передано в оператор SELECT?

Английский оригинал

How can I use values returned from Cursor as table names in mysql procedures ?

DECLARE cur CURSOR FOR select table_name, column_name     from information_schema.columns     where table_schema = 'foo' and table_name like 'bar%'; OPEN cur;  loop1: LOOP  FETCH cur INTO table_val, column_val;  IF no_more_rows THEN   CLOSE cur;   LEAVE loop1; END IF; update table_val SET column_val ... 

This throws error that foo.table_val doesnt exist. How can I get the actual table name to be passed to the select statement ?

</div
     
 
 

Список ответов

1
 
vote
vote
Лучший ответ
 

Изменить <Код> update table_val SET column_val ... в

 <код> #include <iostream> using namespace std;  int foo( int & i ) { return i *= 10; } int bar( int & i ) { return i *= 100; }  #define BADMACRO( X, Y ) do {      cout << "X=" << (X) << ", Y=" << (Y) << ", X+Y=" << ((X)+(Y)) << endl;      } while (0)  #define MACRO( X, Y ) do {      int x = X; int y = Y;      cout << "X=" << x << ", Y=" << y << ", X+Y=" << ( x + y ) << endl;      } while (0)  int main() {     int a = 1; int b = 1;     BADMACRO( foo(a), bar(b) );     a = 1; b = 1;     MACRO( foo(a), bar(b) );     return 0; } 0  

Подробнее об этом здесь .

Но обратите внимание, что вы не можете параметризировать имена таблицы и столбцов. Это работает только со значениями.

 

Change update table_val SET column_val ... into

SET @sql = CONCAT('UPDATE ', table_val, ' SET ', column_val, ' = whatever WHERE...'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; 

Read more about it here.

But note that you can not parameterize table and column names. This only works with values.

</div
 
 
     
     

Связанный проблема

1  Проблемы проектирования базы данных с отношениями  ( Database design issues with relationships ) 
Я работаю над обновлением для существующей базы данных, которая была разработана без какого-либо из кода для реализации рассматриваемой конструкции. Теперь я ...

8  MySQL Заказ с использованием строки даты данных  ( Mysql order by using date data row ) 
У меня есть запрос что-то подобное: <код> public class AlarmReciever extends BroadcastReceiver { AlarmClock alarmClock=new AlarmClock(); @Override public v...

0  Процедура ничего не делает  ( Procedure doesnt do anything ) 
Я сделал процедуру в MySQL. Похоже, это выглядит. Я назвал эту процедуру из PHP. После этого звонка стол все еще остается пустым, и я не знаю почему. ...

0  Использование драйвера UnixoDBC для подключения к MySQL, база данных по умолчанию не работает  ( Using unixodbc driver to connect to mysql default database not working ) 
У меня есть мой unixodbc odbc.ini configure файл, как это: <код> [test] Driver = /usr/local/lib/libmyodbc5-5.1.8.so Description = Connector/ODBC 5.1.8 Drive...

0  Оптимизировать этот запрос на 1000000+ строк  ( Optimize this query for 1000000 rows ) 
Мне нужно потянуть данные и записывать его в файл CSV, но слишком много времени и слишком много времени. Что не так с этим и что я могу сделать? Кроме того, я...

0  Лучший способ написать этот запрос?  ( Best way to write this query ) 
Я делаю подпроси в присоединении к другой таблице, когда я хотел иметь возможность отсортировать результаты, которые я вернулся с ним, мне нужен только первый...

1  Доступ к данным из другой базы данных в Joomla 3.2+  ( Accessing data from another database in joomla 3 2 ) 
Я обновляю свои компоненты от Joomla 1.7 до Joomla 3.3 и должен держать оригинальную базу данных. Поэтому мне необходимо получить доступ к данным отображения ...

1  Иерархическая система комментариев в резьбовом режиме: php и mysql  ( Hierarchical commenting system in threaded view php and mysql ) 
У меня есть необходимость оказать резьбовое изображение 2-уровневых иерархических комментариев системы. Комментарии хранятся в базе данных. Информация о иерар...

0  Ошибка обновления записи  ( Error updating a record ) 
Я получаю ошибку mysql: #update (ActiveReCord :: authentInvalid) "mysql :: Ошибка: # hy 000got Ошибка 139 из механизма хранения: При попытке обновить те...

2  Testopia: невозможно добавить тестовые случаи в тестовый прогон  ( Testopia unable to add test cases to a test run ) 
Bugzilla 4.4. , Tesopia 2.5, Ubuntu 15 все обновляется и почти по умолчанию по настройкам. Каждый раз, когда я пытаюсь обновить / редактировать существующи...

0  Сумма дебета на базе месяца в SQL  ( Sum of debit on the base of month in sql ) 
У меня есть квитанция об имени таблицы Скретко, как следует, <код> account_no date transaction_type amount s1 2012-7-7 opening ...

0  Pandas импорт не вставляет все строки  ( Pandas import not inserting all rows ) 
Я импортирую файл .csv с 3300 рядами данных через следующее: <код> kendo0 После успешного импорта я делаю запрос «Выбрать * из ...» на моем столе, которы...

-1  Используйте SELECT Под действие  ( Use select under case statement ) 
Я хочу использовать запрос, который позволяет мне получить два различия в зависимости от фильтра. Я попробовал это, но не работает. <код> CASE WHEN filtre =...

0  Добавление поля в запросе MySQL  ( Adding a field in a mysql query ) 
Мне нужно добавить поле в одном из наших запросов. Я NT PHP-программист купил, я немного ударил. Запрос: <код> if (_QUERYSTRING_) { switch ($intMode) { ...

-2  PHP отображается только идентификатор, а не значение из MySQL [Закрыто]  ( Php only displaying id and not the value from mysql ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> закрыт . Этот вопрос нуждается в Детали или ясность . В настоящее...




© 2021 www.qaru.top All Rights Reserved. Q&A House все права защищены


Licensed under cc by-sa 3.0 with attribution required.