我有一个存储过程,可以根据两个表选择一个数据列表。第一张表是固定的:CO.Country
。但是第二个表可以是多个表之一。表本身的名称是相同的:Location
。但是,表的架构不同:ABD.Location, CGA.Location, GBN.Location.
用户将从应用程序中选择模式,然后将所选模式作为参数传递给存储过程。
但是,当我在创建存储过程时解析存储过程时,会出现错误。
无论如何,有没有要传递架构名称作为参数?
使用DynamicSql
这样尝试
CREATE PROCEDURE proc_name
@schema VARCHAR(25)
AS
DECLARE @Query VARCHAR(1000)
SET @query='SELECT * FROM' +@schema +'.Location'
EXECUTE(@query)
问题内容: 我正在创建一些存储过程来管理我的数据库。特别是,我想创建一个存储过程来编辑特定行的一列,但是我想通过将列名作为参数传递来做到这一点。 那就是我想做的 使用该参数,我找到了要编辑的特定行,并且我想使用该参数来仅编辑我想要的列。 正如我在其他主题上所读到的那样,我已经尝试使用或定义局部变量,但没有找到解决方案。 有什么帮助吗? 问题答案: 您将需要使用 动态SQL : 请注意,正如Paul
问题内容: 我正在使用一个存储过程,在其中发送数据库中其类型为的存储过程,并且还声明parameter 。 当我将列名传递为float时,它给出了错误: 消息8114,将数据类型nvarchar转换为float时出错。 这是我的测试查询 当我将参数类型更改为时,它给了我这个错误: 消息8117,操作数数据类型varchar对avg运算符无效。 我该如何解决? 更新 : 这是我的存储过程: 问题答案
问题内容: 我有大约六种通用但相当复杂的存储过程和函数,我想以一种更通用的方式使用它们。 理想情况下,我希望能够将表名作为参数传递给过程,因为当前它是硬编码的。 我所做的研究表明,我需要将过程中所有现有的SQL转换为使用动态SQL,以便从参数中拼接动态表名称,但是我想知道是否还有一种更简便的方法可以通过另一种方式引用该表? 例如: 如果是这样,如何从表名设置@MyTable变量? 我正在使用SQL
我试图通过Oracle光标从python到Oracle存储过程(SP)。要求SP获取数据并将数据插入表中。SP取两个参数p1和p2 p1 以下是存储过程的详细信息: p2sys_refcursor,数据将以串联格式(col1|col2|...) 获取cur.callproc(“LIBRA.pt1,[linestr,result]”行中的“DatabaseError:ORA-01036:非法变量名称
问题内容: 我想将 DataDable 传递给 存储过程作为 以下各列的 参数 : 现在,我想在存储过程中使用此数据表,并要在其上声明一个游标。然后使用该光标将值顺序插入数据库表中。 请告诉我如何在存储过程中 声明datatable参数* ,然后在该 参数 上使用 游标 ? * 问题答案: 首先,您需要创建一个类型: 现在,您的存储过程可以将其声明为只读输入参数: 我不确定为什么要在这里使用游标,
问题内容: 我有一个存储过程,它将列名和表名作为参数。 此过程给我一个错误: 必须声明标量变量@TableName 尽管我已经在顶部声明了它。 问题答案: 使用动态SQL: