点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我试图从过程或函数生...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我试图从过程或函数生...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我试图从过程或函数生成查询,该过程或函数希望列名是自定义表中用户设置的变量,然后从仅包含这些列的视图返回数据。 这是我所拥有的:
查看DHANA_MOVIERATES:
查看" DHANA_MOVIERATES"( " MOVIEID", "标题", " USERCOUNT", " AVGRATES" )作为选择t。" MOVIEID",t。" TITLE",count(a。" USERID")作为userCount,avg(a。" RATING")作为AVDHates从" DHANA_MOVIES"到内部连接" DHANA_RATINGS" a。 " MOVIEID" = t。" MOVIEID",按t。" MOVIEID",t。" TITLE"分组 与只读
表DHANA_USERFIELDS:
列表" DHANA_USERFIELDS"( " USERNAME" varchar(180)不为null, " FIELDS" varchar(30)数组不为空, 首要的关键( "用户名" ) ) 卸载优先级5自动合并
一些USERFIELDS数据:
插入USERFIELDS值('xochilpili',array('MOVIEID','TITLE');
函数getCampos():
函数" DHANA_GETCAMPOS"() 返回表(ex_fields nvarchar(1080)) 语言sqlscript sql 安全调用者为 开始 从(SELECT * FROM UNNEST(DHANA_USERFIELDS.FIELDS)AS f(MEM))返回select string_agg(MEM,',')作为ex_fields; 结束;
测试getCampos函数:
从DHANA_GETCAMPOS()中选择*; 输出:MOVIEID,TITLE
要测试的匿名功能:
做(结果DHANA_MOVIERATES =>?) 开始 声明字段nvarchar(255):=''; 从DUMMY的字段中选择DHANA_GETCAMPOS(); 结果=选择:fields作为DHANA_MOVIERATES中的列; 结束; 错误: 返回类型不匹配:RESULT [COLUMNS:NVARCHAR(255)]!=预期结果[MOVIEID:INT TITLE:VARCHAR(255)USERCOUNT:整数速率:小数(3,2)]:
我也尝试过:
从DHANA_MOVIERATES中选择(从DHANA_GETCAMPOS()中选择ex_fields); /*但改为:*/ 电影标题 电影标题 [对于MOVIERATE视图中的每一行]
我已经用许多不同的方法进行了测试,但是我无法获得预期的结果。
有人可以指出我正确的方向吗?
您的假设是SELECT语句可以解释存储在变量中的字段名称。 事实并非如此,在这种情况下,您需要动态SQL (具有所有缺点)。
另一个问题是您具有特定的结果类型。 查询必须提供结果结构中所有字段的值。 因此,如果您想这样做,则需要一个逻辑,该逻辑遍历结果结构的所有字段并为动态查询准备字段列表。 如果允许用户使用该字段,请将该字段添加到字段列表中,如果不允许该用户为各个字段设置null或初始值。 对于允许用户使用MOVIEID和TITLE字段的示例,您应该得到类似" ... MOVIEID,TITLE,null为USERCOUNT,null为RATES ...)。
非常感谢!解决了:D
一周热门 更多>