sql 代码
- create or replace procedure GETREMAIN_JSZX1(
- P_SETID IN NUMBER,
- P_YEAR IN NUMBER,
- P_MONTH IN NUMBER,
- P_UNITID IN VARCHAR2,
- P_EID IN Varchar2,
- P_SID IN Varchar2)
-
- Is
-
- PA_YEAR NUMBER;
-
- Begin
-
- PA_YEAR := P_YEAR+1;
-
- If P_SID='1' Then
-
- INSERT INTO REMAIN (
-
- SELECT SETID,PA_YEAR AS YEAR,UNITID,
- SEQ_REMAIN_ID.NEXTVAL AS ID,
- SID,P_EID AS EID,'' AS BID,
- '' AS IID,BAL00,0 AS ISPLAN,'' AS ENAME,'' AS BNAME,'' AS INAME
- From
- (
- SELECT SETID,YEAR,UNITID,
- PID,SID,NAME AS SNAME,DEBCRE,ISLEAF,NVL(BAL00+(DEBMONEY_TOT-CREMONEY_TOT)*DEBCRE,0) AS BAL00
- FROM(
- SELECT SETID,YEAR,UNITID,SID,NAME
- ,(CASE WHEN DEBCRE='1' THEN 1 ELSE -1 END) AS DEBCRE
- ,ISLEAF,PID
- ,NVL(COUNTLEDGER('1','2','1',P_UNITID,P_SETID,P_YEAR,P_MONTH,TRIM(SID),TRIM(P_EID),TRIM(''),TRIM('')),0) AS DEBMONEY_TOT
- ,NVL(COUNTLEDGER('1','2','2',P_UNITID,P_SETID,P_YEAR,P_MONTH,TRIM(SID),TRIM(P_EID),TRIM(''),TRIM('')),0) AS CREMONEY_TOT
- ,NVL(COUNTREMAIN(P_UNITID,P_SETID,P_YEAR,TRIM(SID),P_EID,TRIM(''),TRIM('')),0) AS BAL00
- FROM
- (
- SELECT SETID,YEAR,UNITID,SID,NAME,DEBCRE,ISLEAF,PID
- FROM ACCOUNTSECTIONS
- WHERE
- SID<>'0.' AND UNITID=P_UNITID AND SETID=P_SETID AND YEAR=P_YEAR
- And SID Like '1%'
- AND ISLEAF=1 AND ENABLED=1
- ORDER BY ID1,ID2,ID3,ID4,ID5,ID6
- )
- )
- ) where BAL00<>0
- );
-
- Elsif P_SID = '1,2' Then
-
- INSERT INTO REMAIN (
-
- SELECT SETID,PA_YEAR AS YEAR,UNITID,
- SEQ_REMAIN_ID.NEXTVAL AS ID,
- SID,P_EID AS EID,'' AS BID,
- '' AS IID,BAL00,0 AS ISPLAN,'' AS ENAME,'' AS BNAME,'' AS INAME
- From
- (
- SELECT SETID,YEAR,UNITID,
- PID,SID,NAME AS SNAME,DEBCRE,ISLEAF,NVL(BAL00+(DEBMONEY_TOT-CREMONEY_TOT)*DEBCRE,0) AS BAL00
- FROM(
- SELECT SETID,YEAR,UNITID,SID,NAME
- ,(CASE WHEN DEBCRE='1' THEN 1 ELSE -1 END) AS DEBCRE
- ,ISLEAF,PID
- ,NVL(COUNTLEDGER('1','2','1',P_UNITID,P_SETID,P_YEAR,P_MONTH,TRIM(SID),TRIM(P_EID),TRIM(''),TRIM('')),0) AS DEBMONEY_TOT
- ,NVL(COUNTLEDGER('1','2','2',P_UNITID,P_SETID,P_YEAR,P_MONTH,TRIM(SID),TRIM(P_EID),TRIM(''),TRIM('')),0) AS CREMONEY_TOT
- ,NVL(COUNTREMAIN(P_UNITID,P_SETID,P_YEAR,TRIM(SID),P_EID,TRIM(''),TRIM('')),0) AS BAL00
- FROM
- (
- SELECT SETID,YEAR,UNITID,SID,NAME,DEBCRE,ISLEAF,PID
- FROM ACCOUNTSECTIONS
- WHERE
- SID<>'0.' AND UNITID=P_UNITID AND SETID=P_SETID AND YEAR=P_YEAR
- And (SID Like '1%' OR SID LIKE '2%')
- AND ISLEAF=1 AND ENABLED=1
- ORDER BY ID1,ID2,ID3,ID4,ID5,ID6
- )
- )
- ) where BAL00<>0
- );
-
- Elsif P_SID = '1,2,3' Then
-
- INSERT INTO REMAIN
-
- (SETID,Year,UNITID,ID,SID,EID,BID,IID,BAL00,ISPLAN,ENAME,BNAME,INAME)
-
- (
-
- SELECT SETID,PA_YEAR AS YEAR,UNITID,
- SEQ_REMAIN_ID.NEXTVAL AS ID,
- SID,P_EID AS EID,'' AS BID,
- '' AS IID,BAL00,0 AS ISPLAN,'' AS ENAME,'' AS BNAME,'' AS INAME
- From
- (
- SELECT SETID,YEAR,UNITID,
- PID,SID,NAME AS SNAME,DEBCRE,ISLEAF,NVL(BAL00+(DEBMONEY_TOT-CREMONEY_TOT)*DEBCRE,0) AS BAL00
- FROM(
- SELECT SETID,YEAR,UNITID,SID,NAME
- ,(CASE WHEN DEBCRE='1' THEN 1 ELSE -1 END) AS DEBCRE
- ,ISLEAF,PID
- ,NVL(COUNTLEDGER('1','2','1',P_UNITID,P_SETID,P_YEAR,P_MONTH,TRIM(SID),TRIM(P_EID),TRIM(''),TRIM('')),0) AS DEBMONEY_TOT
- ,NVL(COUNTLEDGER('1','2','2',P_UNITID,P_SETID,P_YEAR,P_MONTH,TRIM(SID),TRIM(P_EID),TRIM(''),TRIM('')),0) AS CREMONEY_TOT
- ,NVL(COUNTREMAIN(P_UNITID,P_SETID,P_YEAR,TRIM(SID),P_EID,TRIM(''),TRIM('')),0) AS BAL00
- FROM
- (
- SELECT SETID,YEAR,UNITID,SID,NAME,DEBCRE,ISLEAF,PID
- FROM ACCOUNTSECTIONS
- WHERE
- SID<>'0.' AND UNITID=P_UNITID AND SETID=P_SETID AND YEAR=P_YEAR
- And (SID Like '1%' OR SID LIKE '2%' OR SID LIKE '3%')
- AND ISLEAF=1 AND ENABLED=1
- ORDER BY ID1,ID2,ID3,ID4,ID5,ID6
- )
- )
- ) where BAL00<>0
- );
- commit;
-
- End If;
-
- end GETREMAIN_JSZX1;
我在
exec Getremain_Jszx1(2,2007,12,'1004','100.','1,2,3');
报错误..
错误信息为:
sql 代码
- ORA-04091: 表 XZKJ.REMAIN 发生了变化,触发器/函数不能读
- ORA-06512: 在"XZKJ.COUNTREMAIN", line 37
- ORA-06512: 在"XZKJ.GETREMAIN_JSZX1", line 85
- ORA-06512: 在line 1
但是我把存储过程里面的sql语句拿出来将参数替换成值执行了一下.又可以正常运行..
是什么原因呢?
分享到:
相关推荐
- **使用场景**:这段示例代码首先定义了一个名为`EmployeeSales`的新表,然后使用`INSERT INTO SELECT FROM`从多个表中选择符合条件的数据,并将其插入到`EmployeeSales`表中。 - **注意事项**: - 在实际应用中,...
根据提供的文件信息,我们可以构建一个详细的SQL Server存储过程来实现将表中的数据转换为`INSERT INTO`脚本的功能。此存储过程将适用于多种数据类型,并能够动态生成插入语句,以便用户可以方便地导出数据作为脚本...
11. **LOOP AT...INTO...**:用于遍历内部表,例如,`LOOP AT lt_table INTO ls_data`,每次循环将内部表的一个行复制到`ls_data`中。 12. **CALL TRANSACTION** 语句:用于调用SAP标准事务代码,如`CALL ...
- 在实际编码时,错误处理是存储过程开发中非常重要的一个部分。需要考虑到各种边界情况,以及可能发生的异常,并进行相应的处理。 通过这些知识点,我们可以看到MySQL存储过程不仅可以用于简单的查询,还可以执行...
在SQL中,我们可以使用`CREATE PROCEDURE`语句定义一个存储过程。例如,创建一个名为`InsertEmployee`的存储过程,用于插入员工数据: ```sql CREATE PROCEDURE InsertEmployee @EmployeeID INT, @Name VARCHAR...
在SQL中,表复制是常见的数据操作,主要...`INSERT INTO SELECT` 是一个通用的语句,可以在多种数据库中用于将数据从一个或多个源表复制到已存在的目标表。在实际应用中,应根据具体的数据库环境和需求选择合适的语句。
INSERT INTO OrderDetails (OrderId, ItemId, Quantity) VALUES (@OrderId, (SELECT ItemId FROM Orders WHERE OrderId = @OrderId), 1); COMMIT; CATCH ROLLBACK; THROW; END; ``` **3. 安全性增强** - **...
- **执行前**:确认数据库中没有这个存储过程。 - **执行后**:验证存储过程是否成功创建,并能正确执行插入操作。 - **删除存储过程proc_insert**: - **删除语法**: ```sql DROP PROC proc_insert; ``` - ...
- 创建一个没有输入参数的存储过程。 - 示例: `CREATE PROCEDURE p_list_students AS SELECT * FROM students` **34. 创建带输入参数的存储过程** - 创建带有输入参数的存储过程。 - 示例: `CREATE PROCEDURE p_...
SELECT INTO PARA2 FROM TESTTB WHERE I_ID= PARA1; END TESTB; ``` **Java调用示例**: 1. **引入必要的包**同上。 2. **建立数据库连接**同上。 3. **创建CallableStatement并设置参数**: - 创建...
`SELECT * FROM` 是一个通用查询所有列的语句,而`INSERT INTO` 和 `VALUES` 用于构建插入数据的语句。 4. 处理结果集(ResultSet):`ResultSet` 是执行SQL查询后返回的结果对象,它包含了一组记录。`...
创建一个DB2存储过程可以通过DB2开发中心进行,步骤包括: - 新建项目并连接到目标数据库。 - 右键点击选择“新建存储过程”,可以选择直接创建或使用向导辅助创建。 - 定义存储过程的基本结构,如示例所示: `...
5. **使用存储过程**:对于更复杂的批量插入,可以创建一个存储过程来执行一系列的INSERT语句,这在处理大量数据或者需要事务控制时非常有用。例如,在MySQL中,你可以这样定义一个存储过程: ```sql CREATE ...
在Oracle数据库管理系统中,存储过程是一种预编译的SQL和PL/SQL代码集合,用于执行特定任务。它们可以提高性能、减少网络流量,并提供封装和模块化的编程方式。以下是对"oracle存储过程语法[参照].pdf"文件中提到的...
`pro_select`存储过程演示了如何创建一个查询数据的存储过程。它接受一个输入参数`v_id`,并返回对应的`name`。使用`SELECT INTO`将查询结果存入变量`v_name`,然后使用`DBMS_OUTPUT.PUT_LINE`显示结果。 5. **...
### 数据库技术与应用:实验五 视图、存储过程和触发器 #### 视图的定义与查询 1. **定义视图** 在本实验中,首先定义了一个名为`ViewA`的视图,该视图的目的是为了查询`UNIVERSITY`数据库中的选课记录,具体...
本篇文章详细介绍了一个名为 `dataToSQLScript` 的存储过程,该过程能够帮助用户实现这一目标。 #### 存储过程 `dataToSQLScript` 此存储过程的调用方式如下: ```sql EXEC dataToSQLScript @tablename; ``` ...