存储过程的建立,操作远程数据库的时候表名最好加入数据实例,通用的建立用
delimiter $$
END $$
delimiter;
=====================================================
delimiter $$
CREATE PROCEDURE `PD_CD_CHK`(IN INPARA VARCHAR(1000),
OUT OUTPARA VARCHAR(1000))
BEGIN
DECLARE V_ERRMSG VARCHAR(128);
DECLARE fid VARCHAR(100);
DECLARE str VARCHAR(100);
declare tmpMobile varchar(20) default '' ;
declare allMobile varchar(255) default '' ;
DECLARE cntod bigint DEFAULT 0 ;
declare cur1 CURSOR FOR SELECT MOBILE FROM financial_sales_prod.tb_userinfo WHERE ISASSIGN is NULL or ISASSIGN='' ;
declare CONTINUE HANDLER FOR NOT FOUND SET tmpMobile = NULL;
declare CONTINUE HANDLER FOR SQLEXCEPTION SET V_ERRMSG = '002';
OPEN cur1;
FETCH cur1 INTO tmpMobile;
WHILE ( tmpMobile is not null) DO
SET INPARA=tmpMobile;
IF INPARA IS NULL THEN
SET V_ERRMSG ='传入参数错误';
ELSE
SET fid =(
SELECT
COALESCE (
COALESCE (COALESCE(l2.MOBILE, l4.MOBILE), l6.MOBILE),
l8.MOBILE
) MOBILE
FROM
(
SELECT
MOBILE,
INVITER_INVITATION_CODE
FROM
financial_sales_prod.tb_userinfo aa
WHERE
aa.MOBILE = INPARA
) a LEFT JOIN financial_sales_prod.tb_tele_userinfo l ON a.MOBILE=l.MOBILE
LEFT JOIN financial_sales_prod.tb_userinfo b ON a.INVITER_INVITATION_CODE = b.INVITATION_CODE
LEFT JOIN financial_sales_prod.tb_tele_userinfo l2 ON b.MOBILE=l2.MOBILE
LEFT JOIN financial_sales_prod.tb_userinfo c ON b.INVITER_INVITATION_CODE = c.INVITATION_CODE
LEFT JOIN financial_sales_prod.tb_tele_userinfo l4 ON c.MOBILE=l4.MOBILE
LEFT JOIN financial_sales_prod.tb_userinfo d ON c.INVITER_INVITATION_CODE = d.INVITATION_CODE
LEFT JOIN financial_sales_prod.tb_tele_userinfo l6 ON d.MOBILE=l6.MOBILE
LEFT JOIN financial_sales_prod.tb_userinfo e ON d.INVITER_INVITATION_CODE = e.INVITATION_CODE
LEFT JOIN financial_sales_prod.tb_tele_userinfo l8 ON e.MOBILE=l8.MOBILE
WHERE
1 = 1 AND (l.ID is null or l.ID ='')
AND (
(l8.MOBILE IS NOT NULL AND l8.MOBILE !='')
OR (l6.MOBILE IS NOT NULL AND l6.MOBILE !='')
OR (l4.MOBILE IS NOT NULL AND l4.MOBILE !='')
OR (l2.MOBILE IS NOT NULL AND l2.MOBILE !='')
) limit 1
);
IF fid is not null THEN
SET str = fid;
SELECT ID,TEMID,EMPTYPE INTO @empid ,@temid ,@odtyp FROM financial_sales_prod.financial_sales_employment WHERE MOBILE=fid;
IF (@empid IS NOT NULL) OR ( @temid IS NOT NULL) THEN
SET @cnt = (SELECT COUNT(1) FROM financial_sales_prod.financial_sales_order WHERE MOBILE=INPARA);
IF @cnt > 0 THEN
UPDATE financial_sales_prod.tb_userinfo SET RE_ID=str,ISASSIGN='1' WHERE MOBILE=INPARA;
ELSE
START TRANSACTION;
INSERT INTO financial_sales_prod.financial_sales_order(MOBILE, REGISTER_TIME, CUSTOMER_NAME, ISINVEST,ORDER_TYPE,EMP_ID, TEM_ID, CREATED_TIME, ASSIGN_TIME, ISAUTOASSIGN, STATUS) SELECT MOBILE, REG_TIME, NAME, TENDER_STATUS, @odtyp ,@empid, @temid,date(now()) ,date(now()) , '1' ,'1' FROM financial_sales_prod.tb_userinfo WHERE MOBILE=INPARA;
SET cntod=cntod+1;
UPDATE financial_sales_prod.tb_userinfo SET RE_ID=str,ISASSIGN='1' WHERE MOBILE=INPARA;
IF V_ERRMSG = '002' THEN
SET cntod=0;
ROLLBACK;
ELSE
COMMIT;
END IF;
END IF;
END IF;
ELSE
SET str = fid;
SET V_ERRMSG ='仓单不存在!';
END IF;
END IF;
FETCH cur1 INTO tmpMobile;
END WHILE;
CLOSE cur1;
SET OUTPARA = cntod;
END $$
delimiter;
需要员工也在邀请关系表中有自己作为客户的邀请关系记录
相关推荐
要实现存储过程跨数据库操作,首先需要建立一个远程连接。这个远程连接可以使用 SQL Server 企业管理器来建立,也可以使用 SQL 语句来完成定义。建立远程连接的目的是为了使得不同的数据库之间能够进行数据交换和...
#### 设计与创建存储过程 存储过程是SQL Server中预编译的一系列SQL语句,它们存储在数据库中,可通过名称调用,以执行特定任务。几乎任何Transact-SQL代码都可以用来创建存储过程,从而实现复杂逻辑的封装和重用。...
创建存储过程需要注意一些限制,例如不能嵌套创建其他数据库对象,嵌套调用的深度有限,且需要相应的权限才能创建。 执行存储过程通常使用`EXECUTE`或其缩写形式`EXEC`,也可以直接调用存储过程名。执行时可以传入...
#### 二、创建存储过程 根据提供的部分代码示例,我们可以看到一个简单的存储过程`TESTA`被创建: ```sql CREATE OR REPLACE PROCEDURE TESTA( PARA1 IN VARCHAR2, PARA2 IN VARCHAR2 ) AS BEGIN INSERT INTO ...
2. 直接在企业管理器中操作,右键选择要创建存储过程的数据库,然后选择相应的菜单选项创建。 3. 使用Transact-SQL语句,通过`CREATE PROCEDURE`命令来定义存储过程。这个命令允许设置存储过程的名称、参数、权限...
在给定的部分内容中,可以看到一个创建存储过程的例子: ```sql create or replace procedure pro_qzld_czw as -- 状态 SQL JQ_CAD_JCJ_JQ begin execute immediate 'truncate table qzld_czw_info'; insert into ...
总的来说,使用C#导出存储过程并支持模糊查询,可以大大提高数据库管理工作效率,特别是在远程或安装使用场景下,简化了对存储过程的查找和管理。通过理解并应用上述技术,开发者可以构建更高效、更便捷的数据库工具...
4. **远程存储过程**:在远程服务器上执行的存储过程,适用于分布式数据库环境。 5. **扩展存储过程**:由外部编程语言编写,如C、C++等,提供了更强大的功能和灵活性。 #### 四、示例分析 以创建名为`order_tot_...
**格式与创建存储过程** 创建存储过程的语法如下: ```sql CREATE PROCEDURE [所有者.]存储过程名[;程序编号] [(参数#1,...参数#1024)] [WITH{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}] [FOR REPLICATION] ...
本文将深入探讨存储过程的基本知识、功能、优点以及分类,并展示如何在SQL Server中创建存储过程。 1. 存储过程基本知识 存储过程是SQL Server应用程序与数据库交互的一种方式。它不同于简单的SQL查询,因为它可以...
4. **远程存储过程**:用于访问远程服务器上的数据,可以跨越多个服务器执行操作。 5. **扩展存储过程**:通过外部编程语言(如 C 或 C++)编写,并以 DLL 形式加载到 SQL Server 中。扩展存储过程能够实现更复杂的...
- **权限需求**:创建存储过程需要`CREATE PROCEDURE`或`CREATE ANY PROCEDURE`权限。 - **基本语法**: ```sql CREATE [OR REPLACE] PROCEDURE 存储过程名 [(参数 [IN|OUT|INOUT] 数据类型)] {AS | IS} [说明...
接下来,需要创建一个名为`sp_windbi$decrypt`的特殊存储过程来执行解密操作。此存储过程的代码如下所示: ```sql CREATE PROCEDURE [dbo].[sp_windbi$decrypt] (@procedure sysname = NULL, @revfl int = 1) AS ...
在编写存储过程时,你需要掌握一系列SQL语句,如数据定义(DDL)用于创建表等结构,数据操作(DML)用于CRUD(创建、读取、更新、删除)操作,指针操作用于游标处理,动态管理命令用于资源管理,数据访问语句(DCL)...
为了提高性能并减少网络流量,可以将复杂的数据库操作封装为**存储过程**,并将其部署在数据库服务器上。存储过程可以在服务器端直接执行多条SQL语句,减少网络传输次数,显著提升应用程序的响应速度和整体性能。 #...
- **远程存储过程**,用于调用其他服务器上的存储过程。 - **扩展存储过程**,通常用C语言编写,可以访问操作系统级别的资源。 4. **存储过程的基本语法:** ```sql CREATE PROCEDURE [dbo].[procedure_name] ...
- 在数据库中找到存储过程节点,右键选择“创建存储过程”选项。 - 在新弹出的窗口中编写存储过程代码。 - 输入参数和输出参数。 - 执行的SQL语句。 - 返回的状态值。 示例步骤图示未给出,但以上步骤是基本...
创建存储过程时需要注意,不能与其他SQL语句混用,不能在过程中创建视图等对象,而且必须具有相应的权限(如系统管理员、数据库所有者或数据定义语言管理角色)。 执行存储过程使用`EXECUTE`或`EXEC`命令,可以传递...
- 在实际操作中,应确保了解DAC连接的安全风险以及存储过程解密的操作细节,避免造成不可挽回的数据损失。 以上内容详细介绍了如何使用DAC连接以及如何解密存储过程,这对于SQL Server管理员来说是非常实用的知识点...
通过建立数据库连接,如连接到Northwind数据库,可以在SQL Explorer中找到并选择要调试的存储过程。例如,要调试Sales By Year存储过程,需要输入参数值,然后通过"Step Into Stored Procedure"开始调试。调试过程中...