Tôi đang làm việc trên ứng dụng sử dụng truy vấn động để thực hiện một câu lệnh chọn dựa trên đầu vào của người dùng, sau khi thảo luận về bảo mật với các DBA, họ muốn tôi chuyển đổi câu lệnh chọn động của mình thành Thủ tục lưu trữ.
Tôi đã xây dựng sql động bằng MSSQL nhưng tôi không thể tìm ra cách chuyển đổi nó sang Oracle SQL.
CREATE PROCEDURE GetCustomer
@FirstN nvarchar(20) = NULL,
@LastN nvarchar(20) = NULL,
@CUserName nvarchar(10) = NULL,
@CID nvarchar(15) = NULL as
DECLARE @sql nvarchar(4000),
SELECT @sql = 'C_FirstName, C_LastName, C_UserName, C_UserID ' +
'FROM CUSTOMER ' +
'WHERE 1=1 ' +
IF @FirstN IS NOT NULL
SELECT @sql = @sql + ' AND C_FirstName like @FirstN '
IF @LastN IS NOT NULL
SELECT @sql = @sql + ' AND C_LastName like @LastN '
IF @CUserName IS NOT NULL
SELECT @sql = @sql + ' AND C_UserName like @CUserName '
IF @CID IS NOT NULL
SELECT @sql = @sql + ' AND C_UserID like @CID '
EXEC sp_executesql @sql, N'@C_FirstName nvarchar(20), @C_LastName nvarchar(20), @CUserName nvarchar(10), @CID nvarchar(15)',
@FirstN, @LastN, @CUserName, @CID
* xin lưu ý rằng tôi muốn ngăn SQL tiêm, tôi không muốn thêm chuỗi với nhau
** Tôi đã xây dựng một lớp riêng để tạo truy vấn động này cho ứng dụng của mình trong .net Tôi có gần 1000 dòng mã để xử lý mọi thứ và ngăn chặn lệnh sql, nhưng các DBA đã nói với tôi rằng họ muốn các thủ tục được lưu trữ để họ có thể kiểm soát đầu vào và đầu ra.