我想将外壳脚本变量作为OUT参数传递给Mysql存储的proc。存储的过程是这样的:
SET sql_mode = 'ANSI_QUOTES';
DELIMITER $$
CREATE PROCEDURE GetTypeSchemaFromAttributeTable(OUT ColumnType VARCHAR (512), OUT ColumnCharset VARCHAR(128), OUT ColumnCollationName VARCHAR(128))
BEGIN
SELECT `COLUMN_TYPE` AS ColumnType, `CHARACTER_SET_NAME` AS ColumnCharset, `COLLATION_NAME` AS ColumnCollationName FROM information_schema.COLUMNS WHERE `TABLE_SCHEMA`='example' AND `TABLE_NAME`='Attribute' AND `COLUMN_NAME`='Type';
END $$
DELIMITER ;
然后是我的shell脚本:
mysql --host="blabla" --user="blabla" --password="blabla" --database="blabla" -e "CALL GetTypeSchemaFromAttributeTable(@type, @charset, @collation)"
echo $type
echo $charset
echo $collation
但是不幸的是,它没有用。所有这些变量都是空的。有人可以建议我该怎么做吗?
答案 0 :(得分:0)
将mysql命令的输出分配给变量,然后使用awk或其他实用程序将其拆分 在mysql中使用-sN隐藏列名和表布局
output=`mysql --host="blabla" --user="blabla" --password="blabla" --database="blabla" -sN -e "CALL GetTypeSchemaFromAttributeTable(@type, @charset, @collation)"`
$type=`echo $output | awk '{ print $1 }'`
$charse=`echo $output | awk '{ print $2 }'`
$collation=`echo $output | awk '{ print $3 }'`
echo $type
echo $charset
echo $collation