EXEC语句

※ EXEC语句的位置参数

//STEP1 EXEC procedure-name

//STEP EXEC PROC=procedure

//STEP1 EXEC PGM=program-name


※ PGM=位置参数

PGM=指定作业步要运行的程序,其格式如下:

PGM={program-name}

           {*.stepname.ddname}

           {*.stepname.procstepname.ddname}


※ PROC=位置参数

{PROC=procedure-name}

               {procedure-name}

如果省略PROC=关键字,操作系统会自动当成你所要调用的是过程,并帮你到对应的过程库中查找它们。



※EXEC的关键字参数

一些常用关键字参数:ACCT, RD, DYNAMNBR, ADDRSPC, PERFORM, PARM, COND, TIME, DPRTY, CSID


※ PARM参数

用于向本作业步所执行的程序传递变量信息,该程序必须有相应的指令接收这些信息,并使用它们。

PARM格式为:

(1)PARM[.过程步名]=子参数

(2)PARM[.过程步名]=('子参数', 子参数)

(3)PARM[.过程步名]=(子参数,子参数)

(4)PARM[.过程步名]='子参数,子参数'


//MYJOB1 JOB 168,NEWMAN,CLASS=B,MSGCLASS=H

//STEP1 EXEC PGM=APG22,PARM='P1,123,P2=5'

//STEP2 EXEC PROC=ASFCLG,PARM.LIKED=(MAP,LET)


※ COND参数

与JOB语句的COND参数类似,在JOB中的COND可以对整个作业进行控制,在EXEC中是对单个作业步控制。


//MYJOB1 JOB 168,NEWMAN,CLASS=B,MSGCLASS=H

//STEP1 EXEC PGM=IEFBR14

//STEP2 EXEC PGM=DISKUTIL,COND=(4,GT,STEP1)


### 使用 EXEC 执行 SQL 命令 在 SQL 中,`EXEC` 或 `EXECUTE` 是用于调用存储过程的关键字。此关键字不仅限于简单的存储过程调用;还可以用来执行动态 SQL 语句和其他复杂的操作。 #### 调用简单存储过程 当需要调用一个不带参数的存储过程时,可以仅提供存储过程名称作为 `EXEC` 的参数: ```sql -- 不带参数的存储过程调用 EXEC MyStoredProcedure; ``` 对于带有输入参数的情况,则可以在后面附加这些参数[^2]: ```sql -- 带有单个输入参数的存储过程调用 EXEC GetCustomerDetails @CustomerId = 1; -- 多个输入参数的例子 EXEC InsertNewOrder @ProductName='Widget', @Quantity=5, @PricePerUnit=9.99; ``` 如果要处理返回值或者输出参数,可以通过定义变量来接收它们的结果[^3]: ```sql DECLARE @ReturnValue int; DECLARE @OutputValue varchar(50); -- 调用具有输出参数和返回值的存储过程 EXEC @ReturnValue = ProcessOrder @OrderId = 789, @StatusMessage OUTPUT @OutputValue; PRINT 'Return Value: ' + CAST(@ReturnValue AS VARCHAR); PRINT 'Output Message: ' + @OutputValue; ``` #### 动态 SQL 的执行 除了静态地编写并运行查询外,在某些情况下可能希望构建字符串形式的 SQL 查询并在运行时解析它。这通常通过组合字符串表达式实现,并利用 `sp_executesql` 来安全有效地完成这一目标[^5]: ```sql DECLARE @SQLString nvarchar(max), @ParmDefinition nvarchar(500); SET @SQLString=N'SELECT * FROM Orders WHERE OrderDate BETWEEN @StartDate AND @EndDate;'; SET @ParmDefinition=N'@StartDate datetime,@EndDate datetime'; EXEC sp_executesql @SQLString, @ParmDefinition, @StartDate='2023-01-01', @EndDate='2023-12-31'; ``` 上述例子展示了如何使用 `sp_executesql` 函数传递参数给动态生成的 SQL 语句,从而提高了灵活性的同时也减少了潜在的安全风险(比如防止 SQL 注入攻击)。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值