在sql存储过程中怎么判断一个变量值在其表内是否存在,并返还bool值?

做一个添加学生信息的函数,想输入一个学生的ID,调用存储过程来判断表内是否已有该学生的ID,如果有返回bool的true,没有返回false。
谢谢大神指教!不尽感激!

6个回答

耗时一整天 各种翻书查资料 找到了自认最合适我目的的方法 希望也能给其他人带来有用信息

CREATE PROCEDURE [dbo].[usp_IsLineIDExist]
@v_lineID int,
@v_exist int output
AS

SET NOCOUNT ON

BEGIN
IF EXISTS(SELECT [lineID] FROM [dbo].[Line] WHERE [lineID]=@v_lineID)
BEGIN
SET @v_exist=1
END
ELSE
BEGIN
SET @v_exist=0
END
END

说明:这种问题定义一个数据库函数来处理,会更好,实现如下,请参考:

-- 定义一个函数来处理会更好
-- 参数说明:studentId 学生ID(需要传入)
delimiter $
create function checkStudentIsExist(studentId varchar(32))
returns int(1) language sql
begin
-- 定义判断标识符
declare cnt int(1) default 0;

-- 查询学生表 (tab_student) 中改studentId对应的数据条数
select count(1) into cnt from tab_student where student_id = studentId;

-- 判断是否存在, 1 表示存在;0 表示不存在
if(cnt > 0) then 
    return 1;
else 
    return 0;

end;
delimiter ;

请自行替换函数中的表名及字段。

qq123zzz
zhangyuanyincsdn 补充:
接近 3 年之前 回复
Tavin_77
Tavin_77 你好 谢谢你的回复。按照你的想法 我写了写 可是到处报错 我是小白 并不会数据库函数 能不能给个完整点的代码
接近 3 年之前 回复

这个例子差不多,自己完善下;

 begin
  select 字段 into 变量 from 表名 where 条件;
exception
  when no_data_found then
    --提示表中没有数据
end;
Tavin_77
Tavin_77 你好 首先谢谢你的回复 我按照你的格式书写了 但他报错 我是小白 你能再帮我看看么?
接近 3 年之前 回复

图片说明@写给初学者的几封信

Tavin_77
Tavin_77 回复写给初学者的几封信: 重新加上了 还是exception报错 而且no_data_found是什么函数么?
接近 3 年之前 回复
HackAge4619
写给初学者的几封信 你的begin加了没,还有 Exception报错了!
接近 3 年之前 回复

select * from yourtable where id=你传入的ID;
如果 返回结果,你就return TRUE;
else return false;

Tavin_77
Tavin_77 第一句没问题,第二句是如何判断的?总不能写汉字啊。。。
接近 3 年之前 回复

【补充】:

以下需在mysql数据库中执行, 若为其他库(Oracle、DB2等)需参考其格式稍作修改,大致都雷同:

-- 创建表
create table tab_student(student_id varchar(32) primary key);

-- mysql数据库,启用可创建自定义函数
set global log_bin_trust_function_creators=TRUE;

-- 删除函数
drop function checkStudentIsExist;

-- 创建函数
delimiter $
create function checkStudentIsExist(studentId varchar(32))
returns int(1) language sql
begin
-- 定义判断标识符
declare cnt int(1) default 0;

-- 查询学生表中改studentId对应的数据条数
select count(1) into cnt from tab_student where student_id = studentId;

-- 判断是否存在, 1 表示存在;0 表示不存在
if(cnt > 0) then 
    return 1;
else 
    return 0;
    end if;

end;
delimiter ;

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
 sql server存储过程中变量的问题
本人新手学习数据库,在编写程序时候遇到下面的问题,还请大神帮忙; 因为我要用到变量进行参数传递,所以用到了存储过程, 首先: 我实现了 ```set @sql2 = 'select * from CG_INFO_ONE where MACHINE_NAME ='''+ @MacNo +'''' exec sp_executesql @sql2 ``` 然后在查询的表中还有一个时间列CHECKTIME,我还有一个时间变量t,找出和这个时间变量最近的两条数据,那么我认为应该写成这样的: ```set @sql2 = 'select top 2* from CG_INFO_ONE where MACHINE_NAME ='''+ @MacNo +'‘’‘order by '+datediff(minute,@t,CHECKTIME)+'asc'' exec sp_executesql @sql2 ``` 现在的问题是,后面加的那个datediff里面有两个参数,一个是变量,一个是列名,就无法用字符串连接起来了, 求大神解决
sql server 2008存储过程向变量赋值
``` create proc AddOrder @Amount as declare @OrderNo char(40) select @OrderNo=Max(OrderNo) from tbOrderNo begin insert tbOrderNo select @OrderNo=@OrderNo+1,@Amount select '成功' end go ``` 我就是要给@OrderNo赋那个表里OrderNo的最大值 好让我插入的时候OrderNo加一 但是跟我说向变量赋值的SELECT语句不能与数据检索操作结合使用 那我要怎么给@OrderNo赋值
Sql存储过程 通过判断执行不同SQL语句
先判断当前时间,如果是0点到08点之间,就执行第一条sql语句,否则就执行第二条sql语句 我就知道用case when去判断,但是 then 后面怎么写?难道要用一个变量装SQLy语句?然后分别给他赋值? 比如举个例子: 当前时间是早5点,就执行 (select * from A) 时间是16点,就执行(select * from B) 新人没有币,求好心人解答一下 ,谢谢
为啥我存储过程里变量判断这么慢?
服务器win sever 2008 数据库sqlserver 2008 R2. 运行一段时间后,就发现存储过程中简单变量判断都变的很慢。尝试清缓存都不管用,最后只能重启数据库解决。![图片说明](https://img-ask.csdn.net/upload/201705/17/1495004733_905950.png)
sql 2005 存储过程中给变量赋值出错
-- ============================================= ALTER PROCEDURE [dbo].[procselect] ( @name char(20), @index int,---当前页码 @size int,---每页记录数 @n INT OUTPUT, @pages int output---总页数,输出参数 ) AS BEGIN SET NOCOUNT ON; declare @strc varchar(50); declare @num int;----商品表的总记录数 -- set @type = @title; select @num=count(*) from Error a where a.Tname=@name;-----商品表的总记录数 select @N=@num; ----计算总页数 if(@num=0) set @pages=0; else begin if(@num%@size=0) set @pages=@num/@size; else set @pages=@num/@size + 1; declare @i int,@j int; set @i=(@index-1)*@size+1;---当前页起始记录编号 set @j=@index*@size;----当前页最大记录编号 exec('select * from ( select row_number() over (order by errID)as IndexNum, * from Error where Tname='+@name+' )a where a.IndexNum>='+@i+' and a.IndexNum<='+@j ) end END 消息 207,级别 16,状态 1,第 2 行 列名 'hsj' 无效。
在VS中使用sqlite存储一个变量
我是用的是VS2015以及sqlite3,希望存储一个字符型的变量比如:char videoname[100] 建立了数据库,也建立了一个表,通过语句: sql = "insert into \"lalalala\" values(NULL ,'hahahaoa', '20171207' );";可以添加数据但数据库当中 可是我想添加的后两个,本来应该是变量,网上说使用 sql = "insert into \"KeyFrame\" values(NULL ,'"+str1 +" ', '"+ str2+"' );"; 我试了,还是会出错。。。 麻烦各位帮忙解决,或者告诉一些相关链接也好。。。。
pl/sql写存储过程,插入数据,怎么写?
pl/sql写存储过程,向MT_JX这张表中插入新数据,MT_JX这张表中有四个字段:a1,a2,a3,a4.插入的数据全部是变量,对应的变量是P_a1,P_a2,P_a3,P_a4。a1是主键,新手不知道怎么写,求老师指点
怎么将sql语句查询的结果作为参数传递给存储过程
创建了一个存储过程,有两个变量 ,现在想通过sql语句从一个表中查询的结果作为 参数传递给存储过程 exec [dbo].[Sp_replace_field_value5566] 'kehu_no' ,@b1,@b2 怎么将@b1和@b2换成sql语句![图片说明](https://img-ask.csdn.net/upload/201610/24/1477281348_286540.png)
mysql中存储过程,inout参数无法返回值
mysql中存储过程,inout参数无法返回值? mysql存储过程中,使用SELECT给变量赋值的方式,貌似不支持返回! 知道的小伙伴们,不吝赐教,着急 看图: ![图片说明](https://img-ask.csdn.net/upload/201901/11/1547210510_962140.png) ![图片说明](https://img-ask.csdn.net/upload/201901/11/1547210522_169951.png) ![图片说明](https://img-ask.csdn.net/upload/201901/11/1547210531_925420.png)
sqlserver中表值函数的常用方法技巧有哪些?
因ERP框架限制,很多地方必须使用表值函数,不能使用存储过程,同时查询返回的 数据多的时候有几千条,源表的数据量有的也有几十万条,导致表值函数中的表变量 在操作的时候速度很慢!
mysql存储过程中如何将查出来的结果集赋给一个变量
<div class="iteye-blog-content-contain" style="font-size: 14px;"> <p>DELIMITER $$<br>CREATE PROCEDURE p(OUT param INT)<br>    BEGIN<br> DECLARE X INT;<br> SELECT COUNT(NAME) INTO X FROM table WHERE NAME='jim';<br> SET param = X;<br>    END$$<br>DELIMITER ;</p> <p>其中的查询语句返回一个数字, 赋值给x .  现在如果把存储过程中的sql改为<span style="font-size: 12px; line-height: 1.5;">SELECT  *  INTO X FROM table';  赋值给x , x应该改为什么类型?</span></p> <p> </p> </div>
mysql 存储过程 执行变量sql语句
set @sql = concat("select * from project where projectId in (", numProject, ")"); 上面这个@sql 如何执行
在调用存储过程时传入值不会被解析
if(!$is_exist2){ $sql_page=" create procedure page_art(in off int(10),in page_size int(10)) BEGIN select id,title,addtime,type from cj_art where type=9 order by addtime desc limit off,page_size; END "; //建立存储过程 mysql_query($sql_page); } //调用分页存储过程,传递参数 $sql = 'call page_art($off,$page_size)'; echo $sql; $res = mysql_query($sql); 在以上代码中,我传入的变量$off,$page_size不会解析成数字(这个在前面已经定义好了的),然后mysql_query对sql语句的执行就没有成功,返回的是false;我想要通过调用这个过程来做前台分页,现在就卡在这里了,就大神帮忙解答!!!!!!!!!!!!!!!!!!!!!!!!!
#mysql mysql存储过程 表名作为变量的问题
大概意思是想要从TS_SCFZ表中的tabname字段来历遍所有表,从而查找是否有符合条件的记录 请大神帮帮忙 现在报错了 ``` drop procedure if exists deletecheck; delimiter // CREATE DEFINER = `root`@`%` PROCEDURE `deletecheck`(IN vahdm varchar(20)) BEGIN DECLARE done BOOLEAN DEFAULT FALSE; DECLARE vtable VARCHAR(24); DECLARE cur CURSOR FOR select tabname from TS_SCFZ where SFSC = 1; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cur; read_loop: LOOP FETCH cur INTO vtable; IF done THEN LEAVE read_loop; END IF; START TRANSACTION; set @sqlcmd = concat("select (1) from ",vtable," where ahdm = vahdm"); prepare stmt from @sqlcmd; IF EXISTS(execute stmt) THEN select concat('table is ',vtable); ELSE select concat(vtable,' is clean'); deallocate prepare stmt; END IF; COMMIT; END LOOP read_loop; CLOSE cur; END ``` drop procedure if exists deletecheck; delimiter // CREATE DEFINER = `root`@`%` PROCEDURE `deletecheck`(IN vahdm varchar(20)) BEGIN DECLARE done BOOLEAN DEFAULT FALSE; DECLARE vtable VARCHAR(24); DECLARE cur CURSOR FOR select tabname from TS_SCFZ where SFSC = 1; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cur; read_loop: LOOP FETCH cur INTO vtable; IF done THEN LEAVE read_loop; END IF; START TRANSACTION; set @sqlcmd = concat("select (1) from ",vtable," where ahdm = vahdm"); prepare stmt from @sqlcmd; IF EXISTS(execute stmt) THEN select concat('table is ',vtable); ELSE select concat(vtable,' is clean'); deallocate prepare stmt; END IF; COMMIT; END LOOP read_loop; CLOSE cur; END ``` [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'execute stmt) THEN select concat('table is ',vtable); ELSE sele' at line 16 ```
sql语句怎么调用变量?
我在存储过程里面定义一个变量,然后根据传进来的参数判 declare @a ; if(isnull(@abc,0)>0) set @a= ' and name="+@abc+"' select * from p where id=1 @abc .. ..像这样 在查询语句里面加这个 怎么做? 这个查询语句是很长的 有上千行 改成执行字符串的 exec('select ..'+@a+'...') 这种应该不好把
oracle 存储过程 返回复合数据类型(index by表) ibatis如何接受
最近有个问题一直困扰着,希望各位能给予帮助。 先贴代码: 1 <parameterMap class="map" id="UserIndexParam"> 2 <parameter property="PRM_USERID" javaType="java.lang.Object" 3 jdbcType="Object" mode="IN" /> 4 <parameter property="PRM_OBJECTS" javaType="java.sql.ResultSet" 5 jdbcType="ARRAY" mode="OUT" typeHandler="com.diy.object.entity.ObjectTypeHandler" /> 6 <parameter property="PRM_TAGS" javaType="java.sql.ResultSet" 7 jdbcType="ARRAY" mode="OUT" typeHandler="com.diy.tag.entity.TagsTypeHandler" /> 8 <parameter property="PRM_APPCODE" javaType="java.lang.String" 9 jdbcType="VARCHAR" mode="OUT" /> 10 <parameter property="PRM_ERRMSG" javaType="java.lang.String" 11 jdbcType="VARCHAR" mode="OUT" /> 12 </parameterMap> 13 14 <procedure id="prc_user_index" parameterMap="UserIndexParam"> 15 {call 16 PKG_USER.PRC_USER_INDEXVIEW(?,?,?,?,?)} 17 </procedure> 这个ibatis的配置文件. 在网上查了很久,说是用typeHandler和jdbcType来解决解决oracle复合类型, 1 package com.diy.tag.entity; 2 3 import java.sql.CallableStatement; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.util.ArrayList; 8 import java.util.List; 9 10 import oracle.sql.Datum; 11 import oracle.sql.STRUCT; 12 13 import com.ibatis.sqlmap.engine.type.TypeHandler; 14 15 public class TagsTypeHandler implements TypeHandler { 16 17 /** 18 * @Description: 这个方法重点 19 * @param cs 20 * @param arg1 21 * @throws SQLException 22 */ 23 public java.lang.Object getResult(CallableStatement cs, int arg1) 24 throws SQLException { 25 List<Tag> list = new ArrayList<Tag>(); 26 ResultSet rs = cs.getArray(arg1).getResultSet(); 27 while (rs.next()) { 28 Datum[] data = ((STRUCT)rs.getObject(2)).getOracleAttributes(); 29 Tag tag = new Tag(); 30 if (data[0] != null) { 31 tag.setTagid(new Long(data[0].getBytes().toString())); 32 } 33 list.add(tag); 34 } 35 return list; 36 } 37 38 @Override 39 public boolean equals(java.lang.Object arg0, String arg1) { 40 // TODO Auto-generated method stub 41 return false; 42 } 43 44 @Override 45 public java.lang.Object getResult(ResultSet arg0, String arg1) 46 throws SQLException { 47 // TODO Auto-generated method stub 48 return null; 49 } 50 51 @Override 52 public java.lang.Object getResult(ResultSet arg0, int arg1) 53 throws SQLException { 54 // TODO Auto-generated method stub 55 return null; 56 } 57 58 59 60 @Override 61 public void setParameter(PreparedStatement arg0, int arg1, 62 java.lang.Object arg2, String arg3) throws SQLException { 63 // TODO Auto-generated method stub 64 65 } 66 67 @Override 68 public java.lang.Object valueOf(String arg0) { 69 // TODO Auto-generated method stub 70 return null; 71 } 72 73 } 这个是java代码,其中一个handler处理类 1 --定义 object表 对象 2 TYPE object_arr IS TABLE OF OBJECT%ROWTYPE INDEX BY BINARY_INTEGER; 3 4 --定义 tag index_by表 5 TYPE table_tag IS TABLE OF TAGS_INFO INDEX BY BINARY_INTEGER; 这个定义的oracle复合类型 1 PROCEDURE PRC_USER_INDEXVIEW(PRM_USERID IN VARCHAR2, 2 PRM_OBJECTS OUT PKG_COMM.OBJECT_ARR, 3 PRM_TAGS OUT PKG_COMM.table_tag, 4 PRM_APPCODE OUT VARCHAR2, 5 PRM_ERRMSG OUT VARCHAR2) IS 6 N_FLAG NUMBER; 7 VAR_FIRSTTAG VARCHAR2(100); 8 VAR_DUSERID VARCHAR2(100); 9 --用户兴趣标签 10 CURSOR CUR_USERTAG IS 11 SELECT C.TAGID, C.NAME 12 FROM USERSDETIAL A, TAGRELATION B, TAG C 13 WHERE A.DUSERSID = B.DUSERSID 14 AND B.TAGID = C.TAGID 15 AND A.DUSERSID = VAR_DUSERID; 16 --公共兴趣标签 17 CURSOR CUR_USERPUB IS 18 SELECT T.* 19 FROM (SELECT ROWNUM AS RNUM, 20 COUNT(A.DUSERSID) AS CNUM, 21 B.TAGID, 22 B.NAME 23 FROM TAGRELATION A, TAG B 24 WHERE A.TAGID = B.TAGID 25 GROUP BY A.TAGID) T 26 WHERE RNUM <= 8 27 ORDER BY T.CNUM DESC; 28 --object 29 CURSOR CUR_OBJ(VAR_TAGID VARCHAR2) IS 30 SELECT ROWNUM AS RN, A.* 31 FROM OBJECT A 32 WHERE trim(A.TAGID) = VAR_TAGID 33 AND ROWNUM < 30; 34 35 REC_USERTAG CUR_USERTAG%ROWTYPE; 36 REC_USERPUB CUR_USERPUB%ROWTYPE; 37 REC_OBJ OBJECT%ROWTYPE; 38 BEGIN 39 PRM_APPCODE := PKG_COMM.DEF_OK; 40 PRM_ERRMSG := ''; 41 42 IF PRM_USERID IS NULL THEN 43 PRM_APPCODE := PKG_COMM.DEF_ERR; 44 PRM_ERRMSG := '参数未定义'; 45 RETURN; 46 END IF; 47 --用户详细ID是否存在 48 SELECT B.DUSERSID 49 INTO VAR_DUSERID 50 FROM USERS A, USERSDETIAL B 51 WHERE A.USERID = B.USERSID 52 AND A.USERID = PRM_USERID; 53 IF VAR_DUSERID IS NULL THEN 54 PRM_APPCODE := PKG_COMM.DEF_ERR; 55 PRM_ERRMSG := '参数无效'; 56 RETURN; 57 END IF; 58 --1.判断是否为有效用户 59 SELECT NVL(A.FLAG, 1) 60 INTO N_FLAG 61 FROM USERS A, USERSDETIAL B 62 WHERE A.Userid = B.USERSID 63 AND B.DUSERSID = VAR_DUSERID; 64 65 IF N_FLAG = 1 THEN 66 PRM_APPCODE := PKG_COMM.DEF_ERR; 67 PRM_ERRMSG := '用户已被禁止登录'; 68 RETURN; 69 END IF; 70 71 --2.判断用户是否有兴趣tag 72 73 FOR REC_USERTAG IN CUR_USERTAG LOOP 74 75 IF CUR_USERTAG%ROWCOUNT = 0 THEN 76 --获取公共兴趣游标 77 FOR REC_USERPUB IN CUR_USERPUB LOOP 78 IF CUR_USERPUB%ROWCOUNT = 1 THEN 79 VAR_FIRSTTAG := REC_USERPUB.TAGID; 80 END IF; 81 PRM_TAGS(CUR_USERPUB%ROWCOUNT).TAGID := REC_USERPUB.TAGID; 82 PRM_TAGS(CUR_USERPUB%ROWCOUNT).TAGNAME := REC_USERPUB.NAME; 83 END LOOP; 84 ELSIF CUR_USERTAG%ROWCOUNT = 1 THEN 85 VAR_FIRSTTAG := REC_USERTAG.TAGID; 86 END IF; 87 PRM_TAGS(CUR_USERTAG%ROWCOUNT).TAGID := REC_USERTAG.TAGID; 88 PRM_TAGS(CUR_USERTAG%ROWCOUNT).TAGNAME := REC_USERTAG.NAME; 89 END LOOP; 90 91 IF PRM_TAGS.count <> 0 THEN 92 --3. 取出object 93 FOR REC_OBJ IN CUR_OBJ(VAR_FIRSTTAG) LOOP 94 PRM_OBJECTS(CUR_OBJ%ROWCOUNT).OWNERID := REC_OBJ.OWNERID; 95 PRM_OBJECTS(CUR_OBJ%ROWCOUNT).OBJECTID := REC_OBJ.OBJECTID; 96 PRM_OBJECTS(CUR_OBJ%ROWCOUNT).DBUSID := REC_OBJ.DBUSID; 97 PRM_OBJECTS(CUR_OBJ%ROWCOUNT).DUSERSID := REC_OBJ.DUSERSID; 98 PRM_OBJECTS(CUR_OBJ%ROWCOUNT).TAGID := REC_OBJ.TAGID; 99 PRM_OBJECTS(CUR_OBJ%ROWCOUNT).LOVENUM := REC_OBJ.LOVENUM; 100 PRM_OBJECTS(CUR_OBJ%ROWCOUNT).INRUDUCTION := REC_OBJ.INRUDUCTION; 101 PRM_OBJECTS(CUR_OBJ%ROWCOUNT).CATAGROY := REC_OBJ.CATAGROY; 102 PRM_OBJECTS(CUR_OBJ%ROWCOUNT).Imagepath := REC_OBJ.Imagepath; 103 104 END LOOP; 105 END IF; 106 107 EXCEPTION 108 WHEN OTHERS THEN 109 PRM_APPCODE := PKG_COMM.DEF_ERR; 110 PRM_ERRMSG := '获取主界面数据失败' || '错误原因:' || PRM_ERRMSG || '-' || SQLERRM || 111 '错误行数:' || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE(); 112 END; 这个是存储过程的实现,过程没有问题,plsql调试正常!!! 现在我可以确定问题在 1.ibatis xml文件中jdbcType 和typeHandler的配置问题 1 <parameter property="PRM_OBJECTS" javaType="java.sql.ResultSet" 2 5 jdbcType="ARRAY" mode="OUT" typeHandler="com.diy.object.entity.ObjectTypeHandler" /> 3 6 <parameter property="PRM_TAGS" javaType="java.sql.ResultSet" 4 7 jdbcType="ARRAY" mode="OUT" typeHandler="com.diy.tag.entity.TagsTypeHandler" /> 2.java typeHandler类的返回值 还有一个附带的问题:index by 表不能在数据库中存储,而嵌套表可以存储在数据库中。是不是说index by 表 像java 方法中声明的变量,方法结束,其变量的生命周期就结束了??? 谢谢!!!
sqlserver 批量插入数据库的存储过程创建中数据如何绑定
首先数据不是从一个表到另一个表的批量导入 ``` CREATEPROCEDUREadd_UserInfo AS DECLARE@userCodeVARCHAR(30) DECLARE@userNameVARCHAR(30) DECLARE@userCode_baseVARCHAR(30) DECLARE@countINTEGER DECLARE@indexINTEGER DECLARE@rand1INTEGER DECLARE@rand2INTEGER SET@userCode_base='qs_' SET@userName='userName' SET@count=100000 SET@index=10000 WHILE@index<@count BEGIN SET@userCode=@userCode_base+CONVERT(VARCHAR,@index) SET@rand1=convert(int,rand()*5) SET@rand2=convert(int,rand()*5) INSERTINTOuserInfo(userCode,roleType,groupID,userName,text1,text2,text3) VALUES(@userCode,@rand1,@rand2,@userName,'aokeikaoljof','','aokeikaoljof') SET@index=@index+1 END GO ``` 类似上面的代码其中@userCode,@rand1,@rand2,@userName这里的变量不是不变的,是每次插入都不一样,它们的值是从数组获取的
oracle 用call函数执行存储过程,输出变量怎么写
> ![图片说明](https://img-ask.csdn.net/upload/201804/19/1524115601_670261.png) create or replace procedure p_imp_item(v_table_name in varchar2, operator_id in varchar2, v_result out varchar2 ) is V_SQL long; v_seq_num varchar2(20); --v_code varchar2(20); begin begin select concat(to_char(sysdate, 'yyyymmddhh24miss'), lpad(SEQ_PROC_EXECUTE.NEXTVAL, 6, '0')) into v_seq_num from dual; p_proc(v_seq_num, 'PROC_QC_TABLEDATA_STAT', 'begin', ''); --数据项上传 V_SQL := 'insert into data_items_t (id, item_name, item_describe, item_ruler, item_type, item_range, is_multiple_values, is_required, default_value, record_method, remark, create_operator, create_date) select id, item_name, item_describe, item_ruler, decode(item_type, ''字符'', 1, ''数字'' ,2, ''日期'', 3, '''') item_type, item_range, decode(is_multiple_values, ''Y'', 1, 0) is_multiple_values, decode(is_required, ''Y'', 1, 0) is_required, default_value, decode(record_method, ''自动'', 1, ''手动'' , 2, '''') record_method, remark, '''|| operator_id ||''' , sysdate from '|| v_table_name ||''; execute immediate V_SQL; commit; p_proc(v_seq_num, 'p_imp_item', 'end', ''); end; v_result := 1; exception when OTHERS then rollback; p_proc(v_seq_num, 'p_imp_item', 'error', dbms_utility.format_error_backtrace||':'||sqlerrm); end p_imp_item;
oracle存储过程日期变量插入报错问题
不是很明白,求大神解惑。 执行报错: ORA-00923: 未找到要求的 FROM 关键字 ORA-06512: 在 "AICHNL.LD_JUNK_TEST1", line 10 ORA-06512: 在 line 2 过程如下: create or replace procedure ld_junk_test1 is v_sql varchar2(4000); v_chkdate date; v_recdate varchar2(8); begin v_chkdate := sysdate; v_recdate := to_char(v_chkdate, 'yyyymmdd'); v_sql := 'insert into ldjunk_1013_01 select ' || v_chkdate || ',' || v_recdate || ' from dual'; execute immediate v_sql; commit; end ld_junk_test1; v_sql 值: insert into ldjunk_1013_01 select 13-10月-15,20151013 from dual
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
【图解经典算法题】如何用一行代码解决约瑟夫环问题
约瑟夫环问题算是很经典的题了,估计大家都听说过,然后我就在一次笔试中遇到了,下面我就用 3 种方法来详细讲解一下这道题,最后一种方法学了之后保证让你可以让你装逼。 问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。 1、方...
吐血推荐珍藏的Visual Studio Code插件
作为一名Java工程师,由于工作需要,最近一个月一直在写NodeJS,这种经历可以说是一部辛酸史了。好在有神器Visual Studio Code陪伴,让我的这段经历没有更加困难。眼看这段经历要告一段落了,今天就来给大家分享一下我常用的一些VSC的插件。 VSC的插件安装方法很简单,只需要点击左侧最下方的插件栏选项,然后就可以搜索你想要的插件了。 下面我们进入正题 Material Theme ...
如何防止抄袭PCB电路板
目录 1、抄板是什么 2、抄板是否属于侵权 3、如何防止抄板 1、抄板是什么 抄板也叫克隆或仿制,是对设计出来的PCB板进行反向技术研究;目前全新的定义:从狭义上来说,抄板仅指对电子产品电路板PCB文件的提取还原和利用文件进行电路板克隆的过程;从广义上来说,抄板不仅包括对电路板文件提取、电路板克隆、电路板仿制等技术过程,而且包括对电路板文件进行修改(即改板)、对电子产品外形模具进行三维...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
Python 植物大战僵尸代码实现(2):植物卡片选择和种植
这篇文章要介绍的是: - 上方植物卡片栏的实现。 - 点击植物卡片,鼠标切换为植物图片。 - 鼠标移动时,判断当前在哪个方格中,并显示半透明的植物作为提示。
相关热词 c# 二进制截断字符串 c#实现窗体设计器 c#检测是否为微信 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片
立即提问