簡體   English   中英

where子句中的動態參數

[英]Dynamic parameters in where clause

我的存儲過程中的選擇計數有問題,當我使用兩個動力學參數時,它似乎無法工作。

例如 :

1。

SELECT COUNT(*)
INTO @var
FROM TMP_TABLE
WHERE UDA10 = 3;

完美運作

2。

SELECT COUNT(*)
INTO @var
FROM TMP_TABLE
WHERE UDA10 = @vlQuota

也可以

3。

    SELECT COUNT(*)
    INTO @var
    FROM TMP_TABLE
    WHERE @llQuota = 3;   

不起作用(總是返回0)

  1. (我想要的那個)

     SELECT COUNT(*) INTO @var FROM TMP_TABLE WHERE @llQuota = @vlQuota; 

不起作用(總是返回0)

因此,問題可能出在@llQuota參數上,但是當我檢查它時,它應返回“ UDA10”。

我也嘗試使用PREPARE和EXECUTE執行查詢,但是我有同樣的問題。

編輯:UDA10是我示例中輸入的列,它可以是為什么我使用@llQuota而不直接使用UDA10的任何內容。 問題可能是MySQL無法理解@llQuota是一列。

嘗試這個:-

SELECT COUNT(*)
INTO @var
FROM TMP_TABLE
WHERE if('UDA10' = @llQuota, UDA10 = @vlQuota, 1);

在您的查詢中,@ llQuota是字符串,因此不能將其視為列。 它表現為字符串。

使用這種方式:

create PROCEDURE proc_count()
BEGIN
    declare var int(20)default 0;

    select count(*) as count into var from table1;

select var;

END

調用過程:

call proc_count();

找到解決方案后,我不得不使用PREPARE和EXECUTE,但是我還必須連接參數:

例如:

SET @qry = CONCAT('SELECT count(*) into @nbExtract 
FROM TMP_EXTRACTION WHERE ', @llQuota, '= ', @vlQuota, ';');
PREPARE statement FROM @qry;
EXECUTE statement;    

謝謝您的幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM