2014-06-21 67 views
0

我有一個英文單詞數據庫,我想在mysql中做一個程序,程序的輸入參數是一個單詞。程序的目的是取給定輸入詞的第一個字母並返回從該字母開始的所有詞。例如: : call new_procedure('action',@ total); 這個命令應該返回從我的數據庫中所有從'a'開始的單詞。 我寫了下面的代碼,但它返回零行:( 幫助我,我是新MySQL的從mysql中返回程序?

CREATE DEFINER=`root`@`localhost` PROCEDURE `new_procedure`(in error_word varchar(30), 
out total varchar(50)) 
BEGIN 
declare xx varchar(2); 
set xx = substring('error_word',1,1); 
select word from words 
where word like 'xx%' 
into total; 
END 
+0

你不能把'xx'放在引號內,因爲那麼它被當作字符串'xx',而不是名爲xx的變量。您需要使用'CONCAT(xx,'%')' –

+0

yes thankyou concat命令正在工作。但我認爲在返回輸出時存在一些問題。我希望至少獲得1000行,但是會排空行:( – Mohsin

+0

)如果您想從MySQL過程返回結果集,只需執行SELECT,不要使用'INTO total',然後從'CALL '在你的應用程序中查詢,就像你從SELECT中得到的那樣。這個過程將會有一個結果集。 –

回答

-1
CREATE DEFINER=`root`@`localhost` PROCEDURE `new_procedure`(in error_word varchar(30), 
out total varchar(50)) 
BEGIN 

select word from words 
where word LIKE '%' + @error_word + '%' 
into total; 
END 
0

嘗試修改代碼中查找/在你的表和返回一個特定的詞會告訴你,如果你的程序的基本語法是正確的。

例......要求它在表格中搜索包含單詞「動作」,並返回結果的記錄...

換句話說註釋掉嘗試的代碼ts將xx =設置爲參數的第一個字符...並修改您的代碼以簡單地在查詢中使用整個參數。

然後您知道該過程和查詢正在工作。

然後開始檢查您的語法來分析參數並將其存入您的變量中。

自從我做了MySQL以來,我一直很長時間,但我認爲我會試着提出一個解決問題的技巧。希望我解釋得很好。