![](/img/trans.png)
[英]How to correctly pass a SQL query as parameter in Jasper Reports?
[英]How to correctly pass string as a parameter
我想在存储过程中将'H18E142'作为字符串传递。 然后,该参数将在动态SQL select语句中使用,但是我出现错误,提示“ H18E142”是无效的列名。
我直接在SQL代码中放置了“ H18E142”,它可以工作,但是当我在动态SQL中直接将其作为绝对值传递时
-这是select语句-在变量@EIRCODE中传递的char(7)值为'A63DH00'
SELECT ''' + @quarterForDbName + ''' AS Quarter, ADDR_LINE_1, ADDR_LINE_2, ADDR_LINE_3, ADDR_LINE_4 FROM EDB_'+ @quarterForDbName +'.dbo.POSTAL_ADDRESS PA WHERE PA.EIRCODE = ' + @EIRCODE
返回的预期结果是为传递的邮政编码填充的以下字段:
-当前季度-地址行1-地址行2-地址行3-地址行4
字符串文字需要用单引号引起来。 因此,您的查询字符串组成应类似于:
'SELECT ''' + @quarterForDbName + ''' AS Quarter, ADDR_LINE_1, ADDR_LINE_2, ADDR_LINE_3, ADDR_LINE_4 FROM EDB_'+ @quarterForDbName +'.dbo.POSTAL_ADDRESS PA WHERE PA.EIRCODE = ''' + @EIRCODE + ''''
您已经使用@quarterForDbName
,因此您似乎@quarterForDbName
已经知道了。
但是,是的,正如Panagiotis Kanavos已经评论的那样,在不同数据库中拆分的气味有点。 因此,重新设计您的整个概念可能是真正的解决方案。
尝试这个
DECLARE @query VARCHAR(MAX)
DECLARE @quarterForDbName VARCHAR(MAX)
DECLARE @EIRCODE VARCHAR(MAX)
SET @EIRCODE='1'
SET @quarterForDbName='1'
SET @query='SELECT ''' + @quarterForDbName + ''' AS Quarter, ADDR_LINE_1, ADDR_LINE_2, ADDR_LINE_3, ADDR_LINE_4 FROM EDB_'
+ @quarterForDbName +'.dbo.POSTAL_ADDRESS PA WHERE PA.EIRCODE = ' + @EIRCODE
SELECT @query
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.