点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我们试图将输入表带...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我们试图将输入表带...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我们试图将输入表带到过程中,然后尝试遍历该表并尝试替换表中每一行中的值。
到目前为止,我们已经能够成功执行以下代码(将每行中的BEDNR值替换为以500开头的值)
创建 过程 PROC_TEST_RANDOM_1
语言 SQLSCRIPT
AS BEGIN
DECLARE RAND_CUR INT ;
拒绝; RAND_CUR_NO INT ;
声明 CURSOR RANDOM_CURSOR FOR SELECT * FROM "模式名称"。 ABAPTABLES_EKPO";
RAND_CUR:= 500;
FOR CUR_ROW AS AS RANDOM_CURSOR DO
更新"模式名称"。" ABAPTABLES_EKPO"
SET BEDNR = RAND_CUR
位置:EBELN = CUR_ROW.EBELN
AND EBELP = CUR_ROW.EBELP;
RAND_CUR:= RAND_CUR + 1;
END FOR ;
END ;
现在我们要尝试的是将表名替换为输入表名(下面以黄色突出显示)。 基本上在 DECLARE CURSOR 语句中,我们收到语法错误,说不能将Cursor声明为Scalar。 我们正在寻找从输入表变量(IN_TBLNAME)声明游标的方法
创建 过程 PROC_TEST_RANDOM_1(ININ_TBLNAMENVARCHAR(40))
语言 SQLSCRIPT
AS BEGIN
DECLARE RAND_CUR INT ;
拒绝; RAND_CUR_NO INT ;
声明 CURSOR RANDOM_CURSOR FOR SELECT * FROM :IN_TBLNAME; >
RAND_CUR:= 500;
FOR CUR_ROW AS AS RANDOM_CURSOR DO
更新:IN_TBLNAME
SET BEDNR = RAND_CUR
位置:EBELN = CUR_ROW.EBELN
AND EBELP = CUR_ROW.EBELP;
RAND_CUR:= RAND_CUR + 1;
END FOR ;
END ;
我们尝试使用动态Sqlscript动态声明游标
创建 过程 PROC_TEST_RANDOM_POC( IN IN_TBLNAME NVARCHAR (40))
语言 SQLSCRIPT
默认 SCHEMA " ZSDI"
AS BEGIN
声明:RAND_CUR_Value INTEGER := 500;
拒绝; RAND_CUR_NO INTEGER ;
声明:查询 Nvarchar (256):='
DECLARE RAND_CUR INTEGER;
DECLARE CURSOR RANDOM_CURSOR FOR SELECT * FROM'||:IN_TBLNAME;
执行 立即(:查询);
-RAND_CUR:=:RAND_CUR_Value +1;
FOR CUR_ROW AS AS RANDOM_CURSOR DO
更新 ABAPTABLES_EKPO
SET BEDNR = RAND_CUR_value
位置:EBELN = CUR_ROW.EBELN
AND EBELP = CUR_ROW.EBELP;
RAND_CUR_value:= RAND_CUR_value +1;
END FOR ;
END ;
激活时出现以下错误
无法执行"创建过程PROC_TEST_RANDOM_POC(IN IN_TBLNAME NVARCHAR(40))语言SQLSCRIPT DEFAULT ..."
SAP DBTech JDBC:[1287]:必须声明标识符:第12行第16行(在pos 399)
我们需要根据某些条件用一些值更新表中列的每一行。 因此,我们使用游标获取每一行。
如果我们使用Update,它将仅更新该总计列的值。
我的要求是
col1 col2 col3
1个XYZ空值
2 ABC 123
我需要将col3值更改为一些数字序列,例如
col1 col2 col3
1 XYZ 987
2 ABC 876
要更改每一行的col3值,我们使用游标。这里我们将表名作为输入参数。
预先感谢
一周热门 更多>