我正在写一个简单的Web应用程序来调用存储过程并检索一些数据。 它是一个非常简单的应用程序,它与客户端的数据库交互。 我们传递员工ID和公司ID,存储过程将返回员工详细信息。 Web应用程序无法更新/删除数据并正在使用SQL Server。 我正在使用Jboss AS部署我的Web应用程序。 我应该使用JPA来访问存储过程或CallableStatement 。 在这种情况下使用JPA的任何好处。 还有什么将是SQL语句来调用这个存储过程。 我以前从来没有使用过存储过程,而我正在为这个而苦苦挣扎。 谷歌没有太多的帮助。 这里是存储过程: CREATE procedure getEmployeeDetails (@employeeId int, @companyId int) as begin select firstName, lastName, gender, address from employee et where et.employeeId = @employeeId and et.companyId = @companyId end 更新: 对于使用JPA调用存储过程的其他人来说。 Query query = em.createNativeQuery("{call getEmployeeDetails(?,?)}", EmployeeDetails.class) .setParameter(1, employeeId) .setParameter(2, companyId); List<EmployeeDetails> result = […]
我看到Oracle程序有时用“AS”写,有时用“IS”关键字写。 CREATE OR REPLACE Procedure TESTUSER.KILLINSTANCE (INSTANCEID integer) **AS** … 与 CREATE OR REPLACE Procedure TESTUSER.KILLINSTANCE (INSTANCEID integer) **IS** … 两者有什么区别? 编辑:显然,两者之间没有function差异,但有些人遵循约定,当SP是包的一部分时使用“AS”,当不是的时候使用“是”。 或者相反。 咩。
我可以在MySQL的同一个select查询中select多个列到多个variables吗? 例如: DECLARE iId INT(20); DECLARE dCreate DATETIME; SELECT Id INTO iId, dateCreated INTO dCreate FROM products WHERE pName=iName; 这是什么正确的语法?
我在SQL Server 2008中编写了一些存储过程,并想知道可选input参数的概念是否可以在这里? 我想我总是可以传递NULL参数我不想使用,检查存储过程中的值,然后从那里拿东西,但我有兴趣,如果这个概念在这里可用。 谢谢!
我需要将int数据字段转换为具有前导零的nvarchar 例: 1转换为“001” 867转换为“000867”等 谢谢。 这是我4小时后的回应… 我testing了这个T-SQL脚本,适合我! DECLARE @number1 INT, @number2 INT SET @number1 = 1 SET @number2 = 867 SELECT RIGHT('000' + CAST(@number1 AS NCHAR(3)), 3 ) AS NUMBER_CONVERTED SELECT RIGHT('000000' + CAST(@number2 AS NCHAR(6)), 6 ) AS NUMBER_CONVERTED 我创build了这个用户function T-SQL代码: CREATE FUNCTION CIntToChar(@intVal BIGINT, @intLen Int) RETURNS nvarchar(20) AS BEGIN — BIGINT = […]
我从我的C#代码调用SQL Server存储过程: using (SqlConnection conn = new SqlConnection(connstring)) { conn.Open(); using (SqlCommand cmd = new SqlCommand("InsertQuerySPROC", conn)) { cmd.CommandType = CommandType.StoredProcedure; var STableParameter = cmd.Parameters.AddWithValue("@QueryTable", QueryTable); var NDistanceParameter = cmd.Parameters.AddWithValue("@NDistanceThreshold", NDistanceThreshold); var RDistanceParameter = cmd.Parameters.AddWithValue(@"RDistanceThreshold", RDistanceThreshold); STableParameter .SqlDbType = SqlDbType.Structured; NDistanceParameter.SqlDbType = SqlDbType.Int; RDistanceParameter.SqlDbType = SqlDbType.Int; // Execute the query SqlDataReader QueryReader = cmd.ExecuteReader(); 我存储的proc是相当标准的,但与QueryTable进行连接(因此需要使用存储过程)。 […]
我不断收到此查询最大recursion错误。 起初我以为这是因为一个null被返回,然后它会尝试匹配导致错误的空值,然而,我重写了我的查询,所以空值不返回,错误仍然发生。 重写这个函数的最好方法是什么,这样就不会发生错误 WITH EmployeeTree AS ( SELECT EMP_SRC_ID_NR Id, USR_ACV_DIR_ID_TE Uuid, CASE Employees.APV_MGR_EMP_ID WHEN Null THEN '0' ELSE Employees.APV_MGR_EMP_ID END as ApprovalManagerId FROM dbo.[tEmployees] as Employees WITH (NOLOCK) WHERE APV_MGR_EMP_ID = @Id and Employees.APV_MGR_EMP_ID is not null and Employees.EMP_SRC_ID_NR is not null UNION ALL SELECT EMP_SRC_ID_NR Id, USR_ACV_DIR_ID_TE Uuid, CASE Employees.UPS_ACP_EMP_NR WHEN Null THEN […]
我试着改变一个默认的参数值: ALTER PROCEDURE [dbo].[my_sp] @currentDate datetime = GETDATE() 和所有的SQL预编译器给我这个错误: Msg 102,Level 15,State 1,Procedure my_sp,Line 8'(')附近语法不正确。 我已经创build了这个程序。 (我不知道这是相关的。)我使用一个空的默认值,并稍后检查,但这似乎不正确。 我可以在一行吗? 更新:我正在脱离MSDN的存储过程参数的描述 : [= default]是参数的默认值。 如果定义了默认值,则可以执行该function而不指定该参数的值。 注意: 除了varchar(max)和varbinary(max)数据types外,可以为CLR函数指定默认参数值。 当函数的参数具有默认值时,必须在调用该函数以检索默认值时指定关键字DEFAULT。 此行为不同于在存储过程中使用具有默认值的参数,其中省略该参数也意味着默认值。 我读这个错吗? 非常感谢。
我有一个非常简单的问题,但我没有得到任何简单的代码使用Mysql从SP退出。 任何人都可以与我分享如何做到这一点? CREATE PROCEDURE SP_Reporting(IN tablename VARCHAR(20)) BEGIN IF tablename IS NULL THEN #Exit this stored procedure here END IF; #proceed the code END;
比方说,我必须实现一个必须返回一个表作为结果的T-SQL代码。 我可以实现一个表值函数或者一个返回一组行的存储过程。 我应该使用什么? 总之,我想知道的是: 函数和存储过程之间的主要区别是哪些? 我需要考虑使用哪一种考虑因素?