VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1272|回复: 5

在存储过程内部定义的变量,如何将它的值传给sql语句?

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-3-1 21:00:01 | 显示全部楼层 |阅读模式
在存储过程内部定义了一个变量,想在sql语句中使用它的值,是这样写的:
CREATE OR REPLACE PROCEDURE          "GETMAXFLUXINWITHHYID" (
startTime in date,endTime in date
)
as
minHyId number;
begin
        WHILE (minHyId<=20) LOOP
         SELECT * FROM TABLE1 WHERE HY_ID=minHyId AND PROBE_TIME BETWEEN startTime AND endTime;
         minHyId:=minHyId+1
        END LOOP;
end;

可编译总是要提示错误。请问应该怎么写才正确?
不知道存储过程中的变量传递可以采用哪几种写法?
回复

使用道具 举报

0

主题

114

帖子

69.00

积分

新手上路

Rank: 1

积分
69.00
发表于 2020-5-12 09:45:01 | 显示全部楼层
declare @str varchar(1000)
set @str='select * from tablename'
exec(@str)
回复

使用道具 举报

0

主题

71

帖子

50.00

积分

新手上路

Rank: 1

积分
50.00
发表于 2020-5-12 13:30:02 | 显示全部楼层
可以设置要返回的参数为out类型的参数,或者直接改成function
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-5-12 23:15:01 | 显示全部楼层
CREATE OR REPLACE PROCEDURE          "GETMAXFLUXINWITHHYID" (
startTime in date,endTime in date
)
as
minHyId number;
inum number;
begin
        WHILE (minHyId<=20) LOOP
         SELECT count(*) into inum FROM TABLE1 WHERE HY_ID=minHyId AND PROBE_TIME BETWEEN startTime AND endTime;--查询结果没有保存到变量里面
         minHyId:=minHyId+1; --少分号
        END LOOP;
end;
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-5-13 01:45:01 | 显示全部楼层
编译出现错误,使用show error来查看详细信息
回复

使用道具 举报

0

主题

39

帖子

23.00

积分

新手上路

Rank: 1

积分
23.00
发表于 2020-5-13 10:30:01 | 显示全部楼层
我是杀人狂  


   declare @str varchar(1000)
set @str='select * from tablename'
exec(@str)
  

--
彩霞你这是sqlserver语法阿


WHILE (minHyId<=20) LOOP
         SELECT * FROM TABLE1 WHERE HY_ID=minHyId AND PROBE_TIME BETWEEN startTime AND endTime;
         minHyId:=minHyId+1
        END LOOP;
---
select 前面or后面没有into阿
肯定不对

SELECT * FROM TABLE1 WHERE HY_ID=minHyId AND PROBE_TIME BETWEEN startTime AND endTime;
这样写就用到了输入变量




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表