为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:WIN11
【CPU】:7代英特尔
【问题描述】*:EF生成的SQL在DM中执行失败:
--创建表
CREATE TABLE "t_test"
(
"Id" BIGINT IDENTITY(1, 1) NOT NULL,
"IsSuccess" BIT,
"LogMsg" VARCHAR(8000),
"OpHost" VARCHAR(100),
"Browser" VARCHAR(255),
"OS" VARCHAR(255),
"LOCATION" VARCHAR(500),
"Url" VARCHAR(500),
"ClassName" VARCHAR(255),
"MethodName" VARCHAR(255),
"ReqMethod" VARCHAR(100),
"Param" VARCHAR(8000),
"RESULT" TEXT,
"ElapsedTime" INT,
"OpCode" VARCHAR(50),
"OpName" VARCHAR(255),
"LogDate" DATETIME(6) DEFAULT getdate(),
NOT CLUSTER PRIMARY KEY("Id")) ;
--执行该语句
DECLARE TYPE rrr0 IS RECORD ("Browser" NVARCHAR2(8188), "ClassName" NVARCHAR2(8188), "ElapsedTime" BIGINT, "IsSuccess" BIT, "Location" NVARCHAR2(8188), "LogMsg" NVARCHAR2(8188), "MethodName" NVARCHAR2(8188), "OpCode" NVARCHAR2(8188), "OpHost" NVARCHAR2(8188), "OpName" NVARCHAR2(8188), "Os" NVARCHAR2(8188), "Param" NVARCHAR2(8188), "ReqMethod" NVARCHAR2(8188), "Result" NVARCHAR2(8188), "Url" NVARCHAR2(8188), "_Position" int);
TYPE ccc0 IS ARRAY rrr0[];
c0 ccc0;
"V_Id" INT;
BEGIN
c0 = NEW rrr0[1];
c0[1]."Browser" = 'aaaa' ;
c0[1]."ClassName" = 'aaaa' ;
c0[1]."ElapsedTime" = 'aaaa' ;
c0[1]."IsSuccess" = 'aaaa' ;
c0[1]."Location" = 'aaaa' ;
c0[1]."LogMsg" = null ;
c0[1]."MethodName" = 'aaaa' ;
c0[1]."OpCode" = 'aaaa' ;
c0[1]."OpHost" = 'aaaa' ;
c0[1]."OpName" = 'aaaa' ;
c0[1]."Os" = 'aaaa' ;
c0[1]."Param" = 'aaaa' ;
c0[1]."ReqMethod" = 'aaaa' ;
c0[1]."Result" = 'aaaa' ;
c0[1]."Url" = 'aaaa' ;
c0[1]."_Position" = 0;
SELECT MAX("Id") INTO "V_Id" FROM UNIDRGSWEB."t_test";
INSERT INTO UNIDRGSWEB."t_test" ("Browser", "ClassName", "ElapsedTime", "IsSuccess", "Location", "LogMsg", "MethodName", "OpCode", "OpHost", "OpName", "Os", "Param", "ReqMethod", "Result", "Url")SELECT "Browser", "ClassName", "ElapsedTime", "IsSuccess", "Location", "LogMsg", "MethodName", "OpCode", "OpHost", "OpName", "Os", "Param", "ReqMethod", "Result", "Url" FROM ARRAY C0;
SELECT "t"."Id" FROM "t_test" "t"
WHERE EXISTS(SELECT * FROM ARRAY c0 "i" WHERE (TEXT_EQUAL("t"."Browser", "i"."Browser") OR ("t"."Browser" IS NULL AND "i"."Browser" IS NULL )) AND (TEXT_EQUAL("t"."ClassName", "i"."ClassName") OR ("t"."ClassName" IS NULL AND "i"."ClassName" IS NULL )) AND ("t"."ElapsedTime" = "i"."ElapsedTime" OR ("t"."ElapsedTime" IS NULL AND "i"."ElapsedTime" IS NULL )) AND ("t"."IsSuccess" = "i"."IsSuccess" OR ("t"."IsSuccess" IS NULL AND "i"."IsSuccess" IS NULL )) AND (TEXT_EQUAL("t"."Location", "i"."Location") OR ("t"."Location" IS NULL AND "i"."Location" IS NULL )) AND (TEXT_EQUAL("t"."LogMsg", "i"."LogMsg") OR ("t"."LogMsg" IS NULL AND "i"."LogMsg" IS NULL )) AND (TEXT_EQUAL("t"."MethodName", "i"."MethodName") OR ("t"."MethodName" IS NULL AND "i"."MethodName" IS NULL )) AND (TEXT_EQUAL("t"."OpCode", "i"."OpCode") OR ("t"."OpCode" IS NULL AND "i"."OpCode" IS NULL )) AND (TEXT_EQUAL("t"."OpHost", "i"."OpHost") OR ("t"."OpHost" IS NULL AND "i"."OpHost" IS NULL )) AND (TEXT_EQUAL("t"."OpName", "i"."OpName") OR ("t"."OpName" IS NULL AND "i"."OpName" IS NULL )) AND (TEXT_EQUAL("t"."Os", "i"."Os") OR ("t"."Os" IS NULL AND "i"."Os" IS NULL )) AND (TEXT_EQUAL("t"."Param", "i"."Param") OR ("t"."Param" IS NULL AND "i"."Param" IS NULL )) AND (TEXT_EQUAL("t"."ReqMethod", "i"."ReqMethod") OR ("t"."ReqMethod" IS NULL AND "i"."ReqMethod" IS NULL )) AND (TEXT_EQUAL("t"."Result", "i"."Result") OR ("t"."Result" IS NULL AND "i"."Result" IS NULL )) AND (TEXT_EQUAL("t"."Url", "i"."Url") OR ("t"."Url" IS NULL AND "i"."Url" IS NULL )) ) AND ( "t"."Id" > "V_Id" OR "V_Id" IS NULL)
ORDER BY "t"."ROWID";
END;
–执行情况:
修改后可以正常执行。
定义变量的类型和下面赋值都不一样,例如IsSuccess定义BIT类型,下面赋值为’aaaa’,请按照对应的类型赋值