【发布时间】:2018-11-01 16:09:11
【问题描述】:
我在存储过程中有动态 SQL。
该过程采用三个参数:
- DimPartialName
- 列名
- 上传 ID
程序如下:
PROCEDURE "Schema"."DeletefromDIM" (In DimPartialName NVARCHAR(50), In
IDColumnName NVARCHAR(50), IN UploadID NVARCHAR(36) )
LANGUAGE SQLSCRIPT
SQL SECURITY INVOKER
--DEFAULT SCHEMA <default_schema_name>
AS
BEGIN
EXECUTE IMMEDIATE
'select distinct "'|| IDColumnName ||'" from
"Schema"."ZT.'|| DimPartialName ||'" dim
LEFT JOIN "Schema"."SourceTable" raw on
dim."AUDIT.CREATED_ON" = raw."Audit.CREATED_ON"
where "UPLOAD_UUID" = ' || UploadID ||' ';
End;
还有错误:
SAP DBTech JDBC:[257]:sql 语法错误:“Schema”。“DeletefromDIM”:第 15 行 col 1(位置 520):[257](范围 3)sql 语法错误异常:sql 语法错误:不正确“-”附近的语法:第 3 行第 41 行(在 pos 214)
当我在控制台中运行此 SQL 并替换我的输入时,它可以正常工作:
select distinct "BRANDID" from "Schema"."ZT.BRAND" dim
LEFT JOIN "Schema"."SourceTable" raw on dim."AUDIT.CREATED_ON" = raw."Audit.CREATED_ON"
where "UPLOAD_UUID" = 'f889e016-1364-4aac-9536-037d932c55b5';
这个错误并没有真正的意义,因为该位置不仅没有“-”,而且整个语句中也没有破折号。
【问题讨论】:
-
将其更改为
Varchar(max),在尝试评估字符串unique identifier数据时出错,打印@sql 以检查脚本是否正确总是个好主意。简而言之,您的脚本没有用单引号将变量值括起来。
标签: sql syntax-error dynamic-sql hana hana-sql-script