Oracle 我可以在一个命令中执行多个SQL吗?
使用mssql sqlcommand,可以在执行的单个sql命令文本中执行多个查询 比如说Oracle 我可以在一个命令中执行多个SQL吗?,oracle,Oracle,使用mssql sqlcommand,可以在执行的单个sql命令文本中执行多个查询 比如说 strSQL = @" DECLARE @strCOMPCD VARCHAR(4) SET @strCOMPCD = '{2}' DECLARE @strLANGCD VARCHAR(2) SET @strLANGCD = '{3}' DECLARE @strTMYEAR VARCHAR(4) SET @strTMYEAR = '{4}' DECLARE @strTMTERM VARCHAR(4) SET
strSQL = @"
DECLARE @strCOMPCD VARCHAR(4) SET @strCOMPCD = '{2}'
DECLARE @strLANGCD VARCHAR(2) SET @strLANGCD = '{3}'
DECLARE @strTMYEAR VARCHAR(4) SET @strTMYEAR = '{4}'
DECLARE @strTMTERM VARCHAR(4) SET @strTMTERM = '{5}'
DECLARE @strFromDate VARCHAR(10) SET @strFromDate = @strTMYEAR + '-' + @strTMTERM + '-' + '01'
DECLARE @strToDate VARCHAR(10) SET @strToDate = CONVERT(VARCHAR(10), DATEADD(DAY, -1, DATEADD(MONTH, 1, @strFromDate)) ,120)
DECLARE @strFromDate1 VARCHAR(10) SET @strFromDate1 = @strTMYEAR + '-01-01'
DECLARE @strToDate1 VARCHAR(10) SET @strToDate1 = CONVERT(VARCHAR(10), DATEADD(DAY, -1, @strFromDate) ,120)
SELECT
A.*
, H.OBTEXT
, I.NAMEKO
, ISNULL(B.USECNT, 0) AS USECNT
, ISNULL(C.DAFCNT, 0) - ISNULL(D.USECNT, 0) AS CARCNT
, ISNULL(E.DAFCNT, 0) - ISNULL(B.USECNT, 0) AS NUSCNT
, ISNULL(F.WRKCNT, 0) AS WRKCNT
{7}
...
INSERT ...
DELETE ...
";
但是,在oracle中,我不能在一个命令中执行多个查询
有什么解决办法吗?(不拆分每个oracle sql命令)
使用(OracleConnection连接=新的OracleConnection(connString))
{
尝试
{
字符串strSQL=@”
声明
:VAR1 VARCHAR(4)
:VAR1 VARCHAR(4)
将字段1选择到:VAR1中
从测试1开始
其中COMPCD='XXXX'
而EMPNUM='YYYY'
选择TEST2到:VAR2
来自测试2
其中COMPCD='XXXX'
而EMPNUM='YYYY'
...
如果:VAR1'XXXX'
:VAR1='NEWVAL'
选择字段1,字段2,
FUNC_A(:VAR1),
FUNC_b(:VAR2)
从测试3开始
您需要创建一个匿名块。示例如下:
DECLARE
VAR1 number;
VAR2 number;
BEGIN
select FIELD1
into VAR1
from test1
where COMPCD = 'XXXX'
AND EMPNUM = 'YYYY';
select TEST2
into VAR2
from test2
where COMPCD = 'XXXX'
AND EMPNUM = 'YYYY';
IF VAR2 > 0 THEN
dbms_output.put_line('2: '|| to_char(VAR2));
var2 := 64;
END IF;
END;
您想在执行后从命令返回任何内容吗?@Sachu是的,我通过refcursors为每个select查询返回内容,谢谢
DECLARE
VAR1 number;
VAR2 number;
BEGIN
select FIELD1
into VAR1
from test1
where COMPCD = 'XXXX'
AND EMPNUM = 'YYYY';
select TEST2
into VAR2
from test2
where COMPCD = 'XXXX'
AND EMPNUM = 'YYYY';
IF VAR2 > 0 THEN
dbms_output.put_line('2: '|| to_char(VAR2));
var2 := 64;
END IF;
END;