DECLARE _Cur CURSOR FOR SELECT distinct time,temperature,electricity as current from TABLE where time>=sinkpropertystr and time<=sinkstr ORDER BY time;where后面的条件可以传参,不知道这边的TABLE是否也可以用参数代替?自己尝试了一下,似乎不行。不知道是语法上不支持,还是没用对方法?请高手指点一下!!!

解决方案 »

  1.   

    可以。
    拼接字符串,然后execsql执行语句。
      

  2.   


    请问是类似这样吗:
    SET @sqlstr=CONCAT("SELECT rowstr FROM temp_xmlstr ORDER BY Id ASC");
    PREPARE stmtsql from @sqlstr; 
    EXECUTE stmtsql;
    DECLARE _Cur CURSOR FOR stmtsql如果是这样,会报错
      

  3.   


    请问是类似这样吗:
    SET @sqlstr=CONCAT("SELECT rowstr FROM temp_xmlstr ORDER BY Id ASC");
    PREPARE stmtsql from @sqlstr; 
    EXECUTE stmtsql;
    DECLARE _Cur CURSOR FOR stmtsql如果是这样,会报错declare @sql varchar(100) = 'select 1'
    exec (@sql)
      

  4.   


    请问是类似这样吗:
    SET @sqlstr=CONCAT("SELECT rowstr FROM temp_xmlstr ORDER BY Id ASC");
    PREPARE stmtsql from @sqlstr; 
    EXECUTE stmtsql;
    DECLARE _Cur CURSOR FOR stmtsql如果是这样,会报错declare @sql varchar(100) = 'select 1'
    exec (@sql)您给的这个我试了一下,还是没有解决我的问题。我主要是想知道:
    游标遍历里面 DECLARE _Cur CURSOR FOR 查询语句;
    这边的查询语句是可以自定义一些参数、字符串去拼接,还是说只能写死在那?(我要用游标去遍历处理数据)因为我试了几种方法,只有直接写死完整的select语句,才不报错。刚接触存储过程,不太懂,希望指点一下。
      

  5.   


    请问是类似这样吗:
    SET @sqlstr=CONCAT("SELECT rowstr FROM temp_xmlstr ORDER BY Id ASC");
    PREPARE stmtsql from @sqlstr; 
    EXECUTE stmtsql;
    DECLARE _Cur CURSOR FOR stmtsql如果是这样,会报错declare @sql varchar(100) = 'select 1'
    exec (@sql)您给的这个我试了一下,还是没有解决我的问题。我主要是想知道:
    游标遍历里面 DECLARE _Cur CURSOR FOR 查询语句;
    这边的查询语句是可以自定义一些参数、字符串去拼接,还是说只能写死在那?(我要用游标去遍历处理数据)因为我试了几种方法,只有直接写死完整的select语句,才不报错。刚接触存储过程,不太懂,希望指点一下。
    因为你的表格名称是动态的,所以你只能使用拼接字符串的方法。
    然后,你需要把@sql的执行结果放在实体表里,然后用游标读取处理,。
      

  6.   


    请问是类似这样吗:
    SET @sqlstr=CONCAT("SELECT rowstr FROM temp_xmlstr ORDER BY Id ASC");
    PREPARE stmtsql from @sqlstr; 
    EXECUTE stmtsql;
    DECLARE _Cur CURSOR FOR stmtsql如果是这样,会报错declare @sql varchar(100) = 'select 1'
    exec (@sql)您给的这个我试了一下,还是没有解决我的问题。我主要是想知道:
    游标遍历里面 DECLARE _Cur CURSOR FOR 查询语句;
    这边的查询语句是可以自定义一些参数、字符串去拼接,还是说只能写死在那?(我要用游标去遍历处理数据)因为我试了几种方法,只有直接写死完整的select语句,才不报错。刚接触存储过程,不太懂,希望指点一下。
    因为你的表格名称是动态的,所以你只能使用拼接字符串的方法。
    然后,你需要把@sql的执行结果放在实体表里,然后用游标读取处理,。我尝试把执行结果放到一个临时表里再读取处理,但是不成功,是否是mysql不支持将查询结果放到临时表里?
    能否给写几行例子代码,我参考一下
      

  7.   


    请问是类似这样吗:
    SET @sqlstr=CONCAT("SELECT rowstr FROM temp_xmlstr ORDER BY Id ASC");
    PREPARE stmtsql from @sqlstr; 
    EXECUTE stmtsql;
    DECLARE _Cur CURSOR FOR stmtsql如果是这样,会报错declare @sql varchar(100) = 'select 1'
    exec (@sql)您给的这个我试了一下,还是没有解决我的问题。我主要是想知道:
    游标遍历里面 DECLARE _Cur CURSOR FOR 查询语句;
    这边的查询语句是可以自定义一些参数、字符串去拼接,还是说只能写死在那?(我要用游标去遍历处理数据)因为我试了几种方法,只有直接写死完整的select语句,才不报错。刚接触存储过程,不太懂,希望指点一下。
    因为你的表格名称是动态的,所以你只能使用拼接字符串的方法。
    然后,你需要把@sql的执行结果放在实体表里,然后用游标读取处理,。我尝试把执行结果放到一个临时表里再读取处理,但是不成功,是否是mysql不支持将查询结果放到临时表里?
    能否给写几行例子代码,我参考一下
    临时表应该可以,但是表变量肯定不行。你确定你用的是临时表?