MySQL从动态数据库和表查询中选择

时间:2015-08-07 13:41:10

标签: mysql database stored-procedures

存储过程定义:

DECLARE dbName varchar(255);
DECLARE tableName varchar(255);
DECLARE fullPath varchar(255);
DECLARE conditions varchar(255);

SET dbName = idbname;
SET tableName = itablename;
SET fullPath = CONCAT("'",dbName,"'",'.',"'",tableName,"'");
SET checkExists = 0;

我正在创建一个存储过程,其中dbname和tablename是动态的,但是我被困在这个查询的select方面。

我正在尝试使用传递到存储过程中的值来重新计算_test。user

SELECT count(*) INTO checkExists FROM `_test`.`user` WHERE id = 1;

然而,这一行会引发错误

SELECT count(*) INTO checkExists FROM fullPath WHERE id = 1;

错误:

Procedure execution failed
1146 - Table 'dbname.fullpath' doesn't exist

我也尝试过这样的CONCAT()

set conditions = CONCAT('SELECT count(*) INTO ',checkExists, ' FROM ', fullPath, ' WHERE id=', 1);

但是我无法弄清楚如何在选择中使用它?感谢帮助。

1 个答案:

答案 0 :(得分:0)

我喜欢使用 <label class="btn btn-sm btn-info" ng-model="radioModel" btn-radio="'title'"><i class="fa fa-check text-active"></i> Jobprofil</label> <label class="btn btn-sm btn-success" ng-model="radioModel" btn-radio="'division'"><i class="fa fa-check text-active"></i> Afdelinger</label> 进行这些修改。像这样:

$scope

您可能还想在某个地方使用$scope.radioModel = 'title'; 。我不确定你真正想要创建什么查询。

我不确定为什么你有一个名为 $scope.$watch('radioModel', function (newValue, oldValue) { if(newValue == 'title'){ $scope.dataset = $scope.titleSet; } else if(newValue == 'division'){ $scope.dataset = $scope.divisionDataset; } }, true); 的变量,它似乎是目标文件。但是,我建议您在所有局部变量前面添加一些内容,以区别于列名。